【问题标题】:How to add an entry_point/console script to setup.py that uses arguments如何将 entry_point/console 脚本添加到使用参数的 setup.py
【发布时间】:2020-02-27 06:33:49
【问题描述】:

我想向 setup.py 添加一个入口点并传入一个参数。这可能吗,如果可以,怎么办?我已经尝试过,并查看了文档,但无法弄清楚如何去做。

示例:包格式:

mypackage/
   setup.py
   mypackage/
      __main__.py

ma​​in.py 包含:

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

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

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

这似乎不起作用,如果有的话,正确的方法是什么?

【问题讨论】:

    标签: python package setuptools setup.py distutils


    【解决方案1】:

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

    您指定的函数在没有参数的情况下被调用

    或者你可以做这样的事情:

    __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' 就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 2018-11-29
      • 1970-01-01
      • 2016-02-11
      • 2019-08-11
      • 2020-05-16
      • 1970-01-01
      相关资源
      最近更新 更多