setup.py and adding file to /bin/
Consider using console_scripts
:
from setuptools import setup
setup(name='some-name',
...
entry_points = {
'console_scripts': [
'command-name = package.module:main_func_name',
],
},
)
Where main_func_name
is a main function in your main module.
command-name is a name under which it will be saved in /usr/local/bin/ (usually)
The Python documentation explains it under the installing scripts section.
Scripts are files containing Python source code, intended to be started from the command line.
setup(...,
scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val']
)
As mentioned here, beside scripts, there is an entry_points
mechanism, which is more cross-platform.
With entry_points
you connect a command line tool name with a function of your choice, whereas scripts
could point to any file (e.g. a shell script).
There are two ways in order to get a working command line tool from setuptools and PyPI infrastructure:
-
The "scripts" Keyword Argument
This allows the command-line execution of everything you want, it can be a Python script, a shell script or something completely different. -
The "console_scripts" Entry Point
This allows Python functions (not scripts!) to be directly registered as command-line accessible tools.