Sign inSign up

engineervix/pyinstaller-windows

By engineervix

Updated almost 6 years ago

PyInstaller for Windows inside Docker (using Wine)

Image
0

2.1K

engineervix/pyinstaller-windows repository overview

pyinstaller-windows

This is a fork of cdrx/pyinstaller-windows, with the following changes:

  • change Ubuntu base images from 12.04/14.04/16.04 to 18.04/20.04
  • change PyInstaller version from 3.6 to 4.0 for Python 3
  • change to latest Python 3.7.X and 2.7.X releases (as of October 4th, 2020)
  • change OpenSSL from 1.0.2 to 1.1.1
  • change winetricks win7 to winetricks win10
  • change WINE_VERSION=winehq-staging to WINE_VERSION=winehq-stable
  • other minor modifications

engineervix/pyinstaller-windows is a Docker container to ease compiling Python applications to Windows .exe files.

Current PyInstaller version used: 3.6 (this is the last PyInstaller version to support Python 2.7).

Tags

engineervix/pyinstaller-windows has three tags; :python3, :python3-32bit and :python2 which you can use depending on the requirements of your project. :latest points to :python3

The :python2 tag runs Python 2.7.

The :python3 and :python3-32bit tags run Python 3.7.

Usage

This container runs Wine inside Ubuntu to "emulate" Windows in Docker.

To build your application, you need to mount your source code into the /src/ volume.

The source code directory should have your .spec file that PyInstaller generates. If you don't have one, you'll need to run PyInstaller once locally to generate it.

If the src folder has a requirements.txt file, the packages will be installed into the environment before PyInstaller runs.

For example, in the folder that has your source code, .spec file and requirements.txt:

docker run -v "$(pwd):/src/" engineervix/pyinstaller-windows

will build your PyInstaller project into dist/windows/. The .exe file will have the same name as your .spec file.

How do I install system libraries or dependencies that my Python packages need?

You'll need to supply a custom command to Docker to install system pacakges. Something like:

docker run -v "$(pwd):/src/" --entrypoint /bin/sh engineervix/pyinstaller-linux -c "apt-get update -y && apt-get install -y wget && /entrypoint.sh"

Replace wget with the dependencies / package(s) you need to install.

How do I generate a .spec file?

docker run -v "$(pwd):/src/" engineervix/pyinstaller-windows "pyinstaller your-script.py"

will generate a spec file for your-script.py in your current working directory. See the PyInstaller docs for more information.

How do I change the PyInstaller version used?

Add pyinstaller=X.Y.Z to your requirements.txt (where X.Y.Z represents the version).

Is it possible to use a package mirror?

Yes, by supplying the PYPI_URL and PYPI_INDEX_URL environment variables that point to your PyPi mirror.

Known Issues

You tell me!

License

MIT


Tag summary

Content type

Image

Digest

Size

1 GB

Last updated

almost 6 years ago

docker pull engineervix/pyinstaller-windows