“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.