Skip to main content

PyInstaller setuptools integration

Project description

Codacy Badge build status Codecov

What is Subzero?

The goal of subzero is to allow simple and rapid deployment of frozen Python applications with minimal additional effort and developer time. In contrast to other solutions, subzero’s philosophy is that having a working application, quickly is more important than optimizing for size or other factors and that generating your end product (be it and MSI, or other installer) should take only a few minutes to set up. Subzero builds on the extensive development work of other projects, and doesn’t re-invent the wheel. Rather, it ties everything together in a simple and intuitive manner.

How do I install it?

pip install subzero

How do I use it?

In your setup file, replace the default setup import with the followng:

from subzero import setup, Executable

Then run the following command:

python setup.py bdist_msi

That’s it! PyInstaller will build all of the entry points and scripts specified in your executable.

How do I specify options?

In your setup function, you can specify PyInstaller options as follows:

  setup(...
        options={
'         build_exe': {
              'hiddenimports': [],
              'pathex': [],
              'datas': [],
          },
          'bdist_msi': {
              'upgrade_code': '{66620F3A-DC3A-11E2-B341-002219E9B01E}',
              'shortcuts': [
                  'ProgramMenuFolder\Hello World = my_project'
              ],
          }
  ...)

In addition, options can be specified on a per-executable basis replacing each script or entry point with an instance of the Executable class and initializing it with the required options, as shown below:

setup(...
      entry_points={
          'console_scripts': [
              'my_project = hello_world.__main__:main',
              Executable('gui = hello_world.__main__:gui', icon_file='Sample.ico', console=False),
          ]
      },
...)

The full array of options for build_exe is available in the PyInstaller documentation. Providing an upgrade code is strongly recommended for the bdist_msi command. A license agreement will be added to the installer if there is a license text file in the same directory as setup.py.

Extended import discovery (In beta)

In case PyInstaller cannot discover all of your dependencies, you can set optimize_imports=False, as shown below. This option may discover certain imports previously not found but it may also make your application larger. Note that you must add your package requirements in install_requires for this option to work!

'build_exe': {
    'optimize_imports': False
},

Cython (currently not in tests)

Cython modules can also be built because Subzero executes the builtin build command before calling PyInstaller. The following is an example setup.py file for a Cython project:

from setuptools import find_packages, Extension
from subzero import setup

setup(
    name='hello_world',
    author='test_author',
    version='0.1.0',
    packages=find_packages(),
    entry_points={
      'console_scripts': [
          'my_project = hello_world.__main__:main',
      ]
    },
    options={},
    install_requires=[],
    setup_requires=[
        'setuptools>=18.0',
        'cython',
    ],
    ext_modules=[
        Extension(
            'my_module',
            sources=['my_module.pyx'],
        )
    ])

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

subzero-0.2.2.2-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file subzero-0.2.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for subzero-0.2.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 57d27bf20d750e9ae119dde5cf32347a12878158c874c16acae7fe114d2bfedd
MD5 be9fc18c1fd7dbd8d6e340c0ca6a1a54
BLAKE2b-256 4521770faf9dbaf43c2a5ba915ee0065697b15ccc8fd2dd9eed4a767b2daadde

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page