Auto PY to EXE
The only tool that we are gonna be using is Auto PY to EXE!
Auto PY to EXE is an amazing application for making .exe file out of your project whether it is one .py file or any number of them.
The application has a nice gui and looks like this:
How to start
Step 1. Installation
Installing using PyPI:
To install the application run this line in cmd:
pip install auto-py-to-exe
To open the application run this line in cmd:
auto-py-to-exe
Note: if you have problem installing this way or you want to install it from GitHub go to the main page or watch this instructional video by the developer of "Auto PY to EXE" himself.
For more additional information use this
"Issues When Using auto-py-to-exe"
Step 2. Converting
There are few main options you need to choose:
- Pick your .py file
- Pick "One Directory" or "One File" option
- Pick additional files
1. Pick your .py file
If you have multiple files choose one that starts the program.
2.1. "One Directory" option
Pretty simple. When choosing "One Directory" option "Auto PY to EXE" will put all dependencies in one folder. You can choose Output directory in "Advanced" menu. If you have media files like icons and backgrounds you should't have any problems using them inside your .exe if you place media files/folders in Output directory.
Something like this:
2.2. "One File" option
When choosing "One File" option "Auto PY to EXE" will create one .exe file containing all dependencies but NOT MEDIA FILES. If your program has only default Windows gui with no icons, backgrounds, media files or you are OK with placing media folder with .exe file feel free to skip the following explanation. For those who want to pack media files into .exe file itself read paragraph 3.
3. Pick additional files
There is a menu in "Auto PY to EXE" called "Additional Files" that lets you add files of your choice. There is a catch though. "Auto PY to EXE" uses pyinstaller which unpacks the data into a temporary folder, and stores this directory path in the _MEIPASS environment variable. Your project won't find necessary files because the path changed and it won't see the new path eather. In other words, if option "One File" is choosen picked files in the "Additional Files" menu will not be added to .exe file. To work around this you should use this code provided by developer of Auto PY to EXE here
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
To use this code in your project replace the link to the media file you have now
For example:
setWindowIcon(QIcon('media\icons\logo.png'))
with
setWindowIcon(QIcon(resource_path('logo.png'))
Now the link will be referenced correctly and chosen files successfully packed into .exe file.
For comparison:
Possible link before
"C:\Users\User\PycharmProjects\media\icons\logo.png"
Possible link after
"C:\Users\User\AppData\Local\Temp\\_MEI34121\logo.png"
Press CONVERT .PY TO .EXE
Wait
Step 3. Run your program!
Now everything is done!
Run it. Test it. See what`s up.
Make sure everything works well.
You made One Directory
Every file you need should be in the single directory.
You made One File
This way you should have single .exe file. If you had a need and if done correctly your .exe file will be packed with all media inside it. You will not need any media files/folders present with .exe file for it to display them properly.
P.S.
If you have any feedback or suggestions on what important information should be added feel free to let me know!
This guide is not a description of every possible option done every possible way.
I hope you found that information useful!
Good luck with your projects!
Discussion
mv somefile.py somefile.exe
😛
😛
Hey buddy, thanks for creating this. I have a problem though: in my python script I call several files that are in the current working directory, based on relative paths to simplify it. Once it's compiled to the exe, it seems that the program goes to the root folder of the computer as an absolute route. This kind of defeats the object since my program has to run in a folder with other files being added and removed.
What can I do to force the .exe to work on relative paths exactly the same way I have my script?
thanks
Hi!
1.What I usually do is get an absolute path so the script\scripts always know where they are
2.If the main script is looking in the wrong place for other scripts then probably your imports are not correct.
Try to use this resource
realpython.com/absolute-vs-relativ...
Hope that I helped in some way
Great post!
I load variables from a config.py file. How would I enable users to modify this file OUTSIDE the .exe?
Hi!
Don't pack it into .exe file. Leave it outside .exe. It should work that way.
Thanks for your quick response!
How can I leave the config.py file outside? I feel that PyInstaller loads the config.py file, compiles it into the exe and then has this fixed state in the program. I need to be able to modify the config file, after compiling.
How do I instruct PyInstaller to leave the config.py file separate?
You are right about fixed state. What PyInstaller remembers is the name of the file. So if you paste the same file with different content(some .txt maybe) it will work with it just fine because it thinks it is the same file.
That would be amazing and a super easy solve. Problem: I cannot find the config.py in the folder that was created by PyInstaller. Actually I can't find any of the modules I import. Are they merged into the .exe file?
You should add files manually sometimes. Try copying config there. It should work.
It does not work. When I manually add the config.py, the file is added - yes. But when I change variables in the file, nothing changes in the program. The .exe does not load data from the config.py
Make sure you added the fie to Auto PY to EXE additional files menu for it to be compilated with .exe.
I changed my config file to .json and now it works. Even with adding the file manually, it does NOT work when the file is .py (the file was in the folder, but changing settings did not reflect in the script).
I have a question.
In my python code, I use pyqt5, openpyxl, pandas.
And I load some data from excel and take picture using cam and save the picture in same path.
My code works well in my spyder, but it doesn't work when I made exe file.
Should I have to add more options?
More explain about excel file, I need to read and write the excel file.
Hi! What exactly doesn't work when you run it as .exe?
Hello,
I wrote an automation PY script. The script is working fine when tested on my IDE.
I created .exe file through your guide.
I lunched the application it opened fine. Everything was complete.
The problem is that when I tried to run automation it will open the web browser but will not automate anything.
Is they a way you can help me out
Hi!
Send me an error code if sometime there will be one.
List all libs you use. I think one of them works that way.
And try to launch your app from cmd, see if there is anything there.
I have fixed it using Auto py to exe.
I had to add some codes and move some files. It works now. But when I install it I can't find the software lunch icon on Desktop . Had to always go to my folder to lunch it. Is they a way to have it on my Desktop
Glad you fixed it!
I dont remember this option being there. I think by default it saves the result near initial script location.
I'm a VERY inexperienced python user, but have built a couple of very basic scripts with an small interactive UI (using Tkinter/pyodbc).
My question is - once the script is converted to .exe and distributed to the users (who will save and launch from the desktops), do they need to have anything else installed, or is the .exe truly fully self contained?
My goal is to be able to write a script, convert to an executable, send to my users, and have them use that for some basic daily work.
Thanks!
Hi! To use .exe an end user doesn't need anything. Once it's .exe and not .py format your script should be usable without any additional software. Check for correct paths if you're opening smt inside your program.
But make sure (if you work with SQL DB) that it's packed with evething it needs. I haven't tried to work with DB and PyInstaller so I dont know how it will be able to pack it. I guess to PyInstaller it's just the same library as any other.
Thank you for the reply!
It seems that that's not always the case, and the converted .exe doesn't always contain the same stuff.
For example, and I apologize for not having the code and error messages anymore... I had a script (in PyCharm) that pulled a 2 values from a SQL table, then just subtracted them and printed out the difference (up to the thenth position). It worked fine, but once I converted it, I received an error that the "Decimal" module/library could not be found. I never called "Decimal", but one of my colleagues said it was part of the standard python installation. So we assumed the issue, then, was that the "Decimal" library/module/package was excluded from the final build.
I've since been unable to resolve this problem and built the app using something else, but I'd love to try again sometime.
GUI Wrapper for PyInstaller! Gonna try
I love the idea of the program - thanks!
Everything seemed to go great - testing with just one file - moved it to my Windows 10 PC, and got the error message shown in the screen grab.
I hope this is fixable and that there's something simple I didn't do!
The image didn't seem to want to load. Here's what it said ...
"The program or feature cannot start due to incompatibnility
with 64-bit versions of Windows. Please contact the software vendor
to ask if a 64-bit Windows compatible version is available."
Hi!
Probably you used Python x32 or some library that is x32. Check for that, then recompile.
Excellent - thanks for the suggestion - I'll get to work!
cheers, Rick
This looks great! I do want to give a quick shout-out to Nim
If you're looking to build performant executables and Python is what you're really comfortable, I think you'll find Nim's syntax pleasingly similar; and the performance improvements are real 😀
Hi there! Thanks a lot for this beautiful article.
But when I try to run auto-py-to-exe I am getting this error:
Traceback (most recent call last):
File "C:\Users\Muhammad Hashim\AppData\Local\Programs\Python\Python38\Scripts\auto-py-to-exe-script.py", line 6, in
from pkg_resources import load_entry_point
File "C:\Users\Muhammad Hashim\AppData\Local\Programs\Python\Python38\lib\site-packages\pkg_resources_init.py", line 3251, in
def _initialize_master_working_set():
File "C:\Users\Muhammad Hashim\AppData\Local\Programs\Python\Python38\lib\site-packages\pkg_resources__init.py", line 3234, in _call_aside
f(*args, **kwargs)
File "C:\Users\Muhammad Hashim\AppData\Local\Programs\Python\Python38\lib\site-packages\pkg_resources__init.py", line 3263, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "C:\Users\Muhammad Hashim\AppData\Local\Programs\Python\Python38\lib\site-packages\pkg_resources__init.py", line 583, in _build_master
ws.require(requires)
File "C:\Users\Muhammad Hashim\AppData\Local\Programs\Python\Python38\lib\site-packages\pkg_resources__init.py", line 900, in require
needed = self.resolve(parse_requirements(requirements))
File "C:\Users\Muhammad Hashim\AppData\Local\Programs\Python\Python38\lib\site-packages\pkg_resources__init_.py", line 786, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'Eel==0.11.0' distribution was not found and is required by auto-py-to-exe
Hi!
It says you need Eel 0.11.0. Try to install/reinstall Eel and launch auto-py-to-exe again.
Thanks a lot !!!
I can't install it :
Command ""c:\program files (x86)\python37-32\python.exe" -u -c "import setuptools, tokenize;file='C:\Users\NATHAN~1\AppData\Local\Temp\pip-install-d_n5yima\future\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record C:\Users\NATHAN~1\AppData\Local\Temp\pip-record-oaye_ir1\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\NATHAN~1\AppData\Local\Temp\pip-install-d_n5yima\future\
You are using pip version 18.1, however version 19.1.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
I've try to upgrade pip but i can't uninstall my last version
It's not pip version problem I think. I would reinstall pip or python(if nothing helps) if googling doesn't help. Couple months passed since you asked, probably you already have a solution.
Hi, nice post!! It works perfectly. Im compiling the aplication in a 64 (x86) bits system, i wanna know if there is any way to make the programm works in a 32 bits system. Or i have to compile it in a 32 bit system?
Hi!
I think 64/32 bit depends on the libraries you choose to include.
For example, you only have 1 lib in your project.
If you install Python 32bit and PyQt 32bit, compile it, then it should work with 32 bit system.
hey, I got this error
ERROR: Command errored out with exit status 1:
command: 'c:\users\mansi sharma\appdata\local\programs\python\python38-32\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\Mansi Sharma\AppData\Local\Temp\pip-install-1xntxbrx\gevent\setup.py'"'"'; file='"'"'C:\Users\Mansi Sharma\AppData\Local\Temp\pip-install-1xntxbrx\gevent\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\Mansi Sharma\AppData\Local\Temp\pip-install-1xntxbrx\gevent\pip-egg-info'
cwd: C:\Users\Mansi Sharma\AppData\Local\Temp\pip-install-1xntxbrx\gevent\
Complete output (113 lines):
Traceback (most recent call last):
File "c:\users\mansi sharma\appdata\local\programs\python\python38-32\lib\site-packages\setuptools\msvc.py", line 489, in _find_latest_available_vc_ver
return self.find_available_vc_vers()[-1]
IndexError: list index out of range
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Seems like "Microsoft Visual C++ 14.0 is required".
Hey there!
I'm programming with pygame. I have done whatever was in the post but it still gives me fatal error when i run the .exe file. I'm using one file and windowed, and I've written the resource_path function in my code. and I've used it like this:
image1 = pygame.image.load(resource_path('filename.png'))
I wanted to ask is this correct? and if it is then why am i having trouble running the .exe file. and if it's not, then what else should i do?
Hi!
I've never used pygame, so regarding that I'm not competent to give any advice.
But what I think might be happening:
Image format(.png) What I found on pygame.org
"pygame may not always be built to support all image formats. At minimum it will support uncompressed BMP. If pygame.image.get_extended() returns 'True', you should be able to load most images (including PNG, JPG and GIF)."
I'd check that first.
The way the image is loaded. Kind of through another function. I'd separate the code, meaning creating image first(path to image or you can try creating image object), than loading it, checking if everything is OK.
Anyway, without any extended code or error messages I can do more than guess.
Hola!! Tengo una app python 3.6... dos ventanas la de inicio es .ui (qt designer) y la segunda esta creada en qt designer pero es .py... además utilizo pycharm y compila todo lo mas bien...
ahora cuando utilizo pyinstaller tengo varios problemas, el primero es upx not available
alguna solucion??
gracias!!
Hi! I speak only ENG and RUS unfortunately. And autotranslation doesn't do a good job of translating.
Hi,
I'ma first time use and can't get the program to work (I know I'm missing something) - can you help?
Output from the command prompt:
Mulhall@Mulhall-PC MINGW64 /e/python/projects/weighted-kappa/newexe (master)
$ auto-py-to-exe
Traceback (most recent call last):
File "", line 41, in
File "", line 36, in walk_packages
File "", line 36, in walk_packages
File "", line 20, in walk_packages
File "c:\users\mulhall\appdata\local\programs\python\python38-32\lib\site-packages\django\contrib\gis\admin_init.py", line 5, in
from django.contrib.gis.admin.options import GeoModelAdmin, OSMGeoAdmin
File "c:\users\mulhall\appdata\local\programs\python\python38-32\lib\site-packages\django\contrib\gis\admin\options.py", line 2, in
from django.contrib.gis.admin.widgets import OpenLayersWidget
File "c:\users\mulhall\appdata\local\programs\python\python38-32\lib\site-packages\django\contrib\gis\admin\widgets.py", line 3, in
from django.contrib.gis.gdal import GDALException
File "c:\users\mulhall\appdata\local\programs\python\python38-32\lib\site-packages\django\contrib\gis\gdal__init_.py", line 28, in
from django.contrib.gis.gdal.datasource import DataSource
File "c:\users\mulhall\appdata\local\programs\python\python38-32\lib\site-packages\django\contrib\gis\gdal\datasource.py", line 39, in
from django.contrib.gis.gdal.driver import Driver
File "c:\users\mulhall\appdata\local\programs\python\python38-32\lib\site-packages\django\contrib\gis\gdal\driver.py", line 5, in
from django.contrib.gis.gdal.prototypes import ds as vcapi, raster as rcapi
File "c:\users\mulhall\appdata\local\programs\python\python38-32\lib\site-packages\django\contrib\gis\gdal\prototypes\ds.py", line 9, in
from django.contrib.gis.gdal.libgdal import GDAL_VERSION, lgdal
File "c:\users\mulhall\appdata\local\programs\python\python38-32\lib\site-packages\django\contrib\gis\gdal\libgdal.py", line 39, in
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Could not find the GDAL library (tried "gdal204", "gdal203", "gdal202", "gdal201", "gdal20"). Is GDAL installed? If it is, try setting GDAL_LIBRARY_PATH in your settings.
Traceback (most recent call last):
File "c:\users\mulhall\appdata\local\programs\python\python38-32\lib\site-packages\gevent_ffi\loop.py", line 268, in python_check_callback
def python_check_callback(self, watcher_ptr): # pylint:disable=unused-argument
KeyboardInterrupt
2020-05-10T16:08:25Z
Many thanks
Peter
Hi!
I'm not sure what the problem is. Try to reinstall GDAL as error message says or Django itself.
Wow did not know this app was out there. Thank you for your hard work. I have been trying to use pyinstaller to distrinute my tkinter app with SQLite DB... The error I get using pyinstaller is the same one I get using your tool. And that is when I try and use data from the DB or try to update the DB I get the following error:
sqlite3.OperationalError: no such table: track2
Any ideas?
Again thank you!
Hi!
Try this solution on stackoverflow
Check out this method to making sure that you are working in the right directory.
one way to do it
Let me know if that helps or not!
Hi! I managed to convert the file but I'm facing some issues. These buttons will directly link to google chrome and display plotly graphs. However, the modules are not included. For example "No module named 'plotly'"
What can I do to make it work?
Thank you so much!
Hi!
Try to include them using Auto py to exe. I think in advanced you can include libs that you need.
If that doesn't work then copy them inside the converted folder.
Hey there, i've been running into an error since last week. I tried to create a executable from a python file and everything worked fine except the fact that i had a console open when the exe was running. So i decided to use the --noconsole command in order to hide it and then the exe won't start . I got the error "failed to execute script". Coud anyone help me out?
Thanks you very much.
Hi!
If youneed to hide the console you can choose the option in Auto py to exe to hide it.
hey when I add the dll files using add files drop down and create the exe , when i try to open the exe it says "failed to compile the exe file_name" , can you please help out with this it urgent as well Thank you so much in advance
Hi! Can you please send some screenshots?
It's not good to do this. The performance will stay same (even decreased) and it will lose the cross-platform ability.
I think a common use case is sharing a Python program with someone who might not have the interpreter installed.
I am facing the below issue while converting py to exe. It if failing at Analysis due to log formatting syntax.
I created the exe file according to your guide but it doesn't automate web browser as it does on IDE. It only opens the web browser but does nothing.
Ok, so I don't know why but Windows power shell doesn't recognize the command even though it's downloaded I've even found Auto-py-to-exe in my python packages.
Hi! Check PATH variables
Nice!! How does this handle zipfile?
If I understood your quiestion correctly then that's what I found pythonhosted.org/PyInstaller/advan...
Does this pack all the libraries that need to be imported in my python code in my .exe file ?
Yes, it does.
SystemExit: Unable to find "C:\Users\medo2\nltk_data" when adding binary and data files.
Project output will not be moved to output folder
Complete.
I am facing the below issue while converting py to exe. It if failing at Analysis due to log formatting syntax.
[thepracticaldev.s3.amazonaws.com/i...]
Hi!
1.If you still have the problem I would look and the string itself with
log.error(f""). Dont think that you can do what I think you are trying to do.
2.If second error is present after you delt with the first one, then simple recomendation is to reinstall pyinstaller. I had multiple problems with converting and they mostly got solved by restarting converting process.
I am using python 3.8 and getting error as script failed to execute script
I am using Python 3.8 and getting an error as failed to execute script ....
Hi!
I haven't tried to run Auto PY to EXE on anything later than 3.6. I think there should be information about supported versions of Python on the official page of Auto PY to EXE.