How do I compile my Python 3 app to an .exe? [closed]


How do I compile my Python 3 app to an .exe? [closed]



How do I convert my Python app to a .exe? I made a program with tkinter and was wondering how to make it possible for others to use. I use Python 3.3. I searched for a bit but could not find anything.


.exe


tkinter



This question appears to be off-topic. The users who voted to close gave this specific reason:





yes, but they are all for 2.7 and below, i use 3.3
– Samir Chahine
Jul 28 '13 at 10:32





Okay, but it is still a very common question. My answer was from a quick Google search.
– Andy G
Jul 28 '13 at 10:38





I added the 3 to your title but, unfortunately, I suspect your question still might get closed. Good luck.
– Andy G
Jul 28 '13 at 10:44





possible duplicate of How can I turn a python 3.3 script into executable file? I found PyInstaller and py2exe, but both did not support 3.3
– Cees Timmerman
May 19 '15 at 13:52




5 Answers
5



cx_Freeze does this but creates a folder with lots of dependencies. py2exe now does this and, with the --bundle-files 0 option, creates just one EXE, which is probably the best solution to your question.



UPDATE: After encountering third-party modules that py2exe had trouble "finding", I've moved to pyinstaller as kotlet schabowy suggests below. Both have ample documentation and include .exes you can run with command line parameters, but I have yet to compile a script that pyinstaller isn't able to handle without debugging or head-scratching.



Here's a simple convenience function I use to build an .exe with my defaults from the interpreter (of course a batch or similar would be fine too):


import subprocess,os
def exe(pyfile,dest="",creator=r"C:Python34Scriptspyinstaller.exe",ico=r"C:my iconsfavicon.ico",noconsole=False):
insert=""
if dest: insert+='--distpath ""'.format(dest)
else: insert+='--distpath "" '.format(os.path.split(pyfile)[0])
if ico: insert+=' --icon="{}" '.format(ico)
if noconsole: insert+=' --noconsole '
runstring='"{creator}" "{pyfile}" {insert} -F'.format(**locals())
subprocess.check_output(runstring)





This answers "What?", but not "How?"
– CaffeineConnoisseur
Jan 22 '16 at 1:12



I have found PyInstaller to work the best.
You have many options for example you can pack everything to a one file exe.



I love to use it together with Cython for speed.



You can use cx_Freeze. There is a guide here.



Use Pyinstaller.
After installing it, open terminal in the directory where your project resides.



$ pyinstaller script1.py script2.py ... (where script1, script2, etc. are all the scripts used in your project.)


$ pyinstaller script1.py script2.py ...



After command is completed, open dist folder and enter the subdirectory. There you'll find an executable.


dist



Hope it helps.



If you want a hassle-free solution, then I suggest you visit pytoexe.net

Popular posts from this blog

api-platform.com Unable to generate an IRI for the item of type

How to set up datasource with Spring for HikariCP?

Display dokan vendor name on Woocommerce single product pages