I am trying to be a good Pythonista and following PEP 338 for my package I plan on deploying.
I am also trying to generate my executable scripts upon python setuptools install using setuptools entry_points{'console_scripts': ... } options.
How can I use entry_points to generate a binary that calls python -m mypackage (and passes *args, **kwargs) ?
Here are a few attempts I have made with no success:
setuptools(
...
(1)
entry_points=
{'console_scripts': ['mypkg=mypkg.__main__'],},
(2)
entry_points=
{'console_scripts': ['mypkg=mypkg.main'],},
(3)
entry_points=
{'console_scripts': ['mypkg=python -m mypkg'],},
Primary resources I have been using:
How can I use entry_points to generate a binary that calls python -m mypackage (and passes *args, **kwargs) ?
I think this is the wrong way to look at the problem. You don't want your script to call python -m mypackage, but you want the script to have the same entry point as python -m mypackage
Consider this simple example:
script_proj/
├── script_proj
│ ├── __init__.py
│ └── __main__.py
└── setup.py
and the minimalistic setup.py:
from setuptools import setup
setup(
name="script_proj",
packages=["script_proj"],
entry_points = {
"console_scripts": [
"myscript = script_proj.__main__:main",
]
}
)
__main__.py is a dummy module and contains the main method.
def main():
print("Hello world!")
if __name__ == "__main__":
main()
After installing, you have the executable myscript, which calls the main method in __main__.py.
In this package design python -m script_proj also calls the same main method.
来源:https://stackoverflow.com/questions/27784271/how-can-i-use-setuptools-to-generate-a-console-scripts-entry-point-which-calls