如何将 entry_point/console 脚本添加到使用参数的 setup.py

How to add an entry_point/console script to setup.py that uses arguments

我想向 setup.py 添加一个入口点并传入一个参数。这可能吗?如果可能的话怎么办?我试过并查阅了文档,但不知道如何去做。

示例:包格式:

mypackage/
   setup.py
   mypackage/
      __main__.py

main.py 包含:

def main(print_me=False):
    if print_me:
       print("test")

setup.py 包含如下所示的控制台脚本:

entry_points={
        'console_scripts': [
            'test = mypackage.__main__:main(print_me=True)'
         ]}

这似乎行不通,如果有的话,正确的方法是什么?

根据 setuptools' documentation on "Automatic Script Creation" 这是不可能的:

The functions you specify are called with no arguments

或者你可以这样做:

__main__.py中:

def main_true():
    return main(print_me=True)

setup.py中:

entry_points={
    'console_scripts': [
        'test = mypackage.__main__:main_true'
     ],
},

但在这种特殊情况下,因为 True 已经是参数 print_me 的默认参数,这可能不是必需的,将 'test = mypackage.__main__:main(print_me=True)' 更改为 'test = mypackage.__main__:main' 应该够了。