“Eggsecutable” Scripts#

Deprecated since version 45.3.0.

Occasionally, there are situations where it’s desirable to make an .egg file directly executable. You can do this by including an entry point such as the following:

setup(
    # other arguments here...
    entry_points={
        "setuptools.installation": [
            "eggsecutable = my_package.some_module:main_func",
        ]
    }
)

Any eggs built from the above setup script will include a short executable prelude that imports and calls main_func() from my_package.some_module. The prelude can be run on Unix-like platforms (including Mac and Linux) by invoking the egg with /bin/sh, or by enabling execute permissions on the .egg file. For the executable prelude to run, the appropriate version of Python must be available via the PATH environment variable, under its “long” name. That is, if the egg is built for Python 2.3, there must be a python2.3 executable present in a directory on PATH.

IMPORTANT NOTE: Eggs with an “eggsecutable” header cannot be renamed, or invoked via symlinks. They must be invoked using their original filename, in order to ensure that, once running, pkg_resources will know what project and version is in use. The header script will check this and exit with an error if the .egg file has been renamed or is invoked via a symlink that changes its base name.