A small desktop app that packages any Python project as a one-file Windows EXE (PyInstaller), a Docker image, or both. It drops a self-contained build toolchain into the project so you can rebuild from a batch file afterwards.
- Download
BuildDeployRun.exefrom the latest release and run it. If you built from source instead, rundist\BuildDeployRun.exeorlaunch.bat. - Pick your project folder and its entrypoint script (for example
main.pyorsrc\main.py). - Choose a Build target: EXE + Docker image, EXE only, or Docker image only. Leave the Docker path empty unless Docker is installed somewhere unusual.
- Click Build Project. The app:
- copies
Build_Deploy_Run\into your project (runner, workers, requirements), - creates
Build_Deploy_Run\.venvwith PyInstaller, - creates a project
.venvif you do not have one, - writes
Build_Deploy_Run\.deploy_configandbuild_and_deploy_venv_locked.bat, - packages the project (unless you untick Package right after setup).
- copies
- The EXE lands in
<project>\dist\<entrypoint>.exe; the Docker image is tagged<project_name>:latest. A failing step is reported in the log and in an error dialog.
Rebuild any time from your project folder:
.\Build_Deploy_Run\build_and_deploy_venv_locked.batThe batch file reads its defaults (entrypoint and build target) from .deploy_config.
Arguments override them:
.\Build_Deploy_Run\build_and_deploy_venv_locked.bat src\main.py --skip-dockerTarget flags: --skip-docker / --docker and --skip-exe / --exe.
If your project has a requirements.txt, it is installed into the tool venv before PyInstaller runs
so the EXE contains your dependencies. If it does not exist, one is generated from your project .venv.
A Docker build generates a default Dockerfile and .dockerignore only when the project has none.
The same exe works without the GUI, which is handy for scripts and CI:
BuildDeployRun.exe --project C:\path\to\project --entrypoint src\main.py --skip-dockerOther flags: --skip-exe (Docker only), --no-run (set up only, no packaging), --replace-venv,
--open-project, --docker-path.
python -m pip install -r requirements.txt
python -m PyInstaller BuildDeployRun.spec --clean --noconfirmTo run the GUI from source instead: python launch_gui.py.
If you find this project helpful and want to support further development by Fulllion Creative Works, consider leaving a tip!
© 2026 Fulllion Creative Works. All rights reserved.