A simple project that demonstrates how to create an executable from a Python project.
hello.py is the main file. It uses a module (
it imports the
os module from the stdlib, and it even uses
a 3rd-party library (
With PyInstaller, you can easily create a single executable from this project.
$ pyinstaller --onefile hello.py
Under Windows you might have a problem with this. If the .exe complains that a DLL is missing, then try this variation:
$ pyinstaller --onefile --noupx hello.py
You'll find the exe in the
Why would you need an EXE?
It makes distributing your program much easier. The exe produced by PyInstaller is standalone. It's enough to give this exe to your friend and (s)he can run it right away. There is no need to install Python on his/her machine, create a virtual environment, etc.
Of course, if your friend uses Windows (Linux), then create the exe under Windows (Linux).
Will my EXE run faster?
No. PyInstaller simply creates a bundle that contains everything: your code,
the necessary modules / packages, the virtual environment, the Python interpreter, etc.
When you launch the EXE, it is extracted to your temp folder (under Linux
/tmp folder), and your application is started from there. So the
runtime will be approximately the same.
For a demo, check out my simple Fibonacci implementation in the folder
pynt is a minimalistic build tool. If you installed everything
with pipenv (
pipenv install --dev), then you can also create
the executable with the following commands:
$ pynt exe
or (using pyinstaller's
$ pynt exe2
Click on the image below to open a YouTube video that shows you everything step-by-step:
Links / News / Related Work
- This project of mine got included in PyCoder's Weekly -- Issue #355 under the title "PythonEXE: How to Create an Executable File From a Python Script?"
- Reddit discussion: here.
- Using PyInstaller to Easily Distribute Python Applications, a blog post on the same topic
- PyUpdater, a pyinstaller auto-update framework