How can I use setuptools to generate a console_scripts entry point which calls `python -m mypackage`?

邮差的信 提交于 2019-11-28 07:35:02

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!