如何将整个click cli模块与setuptools entry_points

时间:2018-12-13 20:57:46

标签: python command-line-interface setuptools entry-point

spartans/bin/下,我有一个名为click的{​​{1}} cli模块,看起来像这样:

spartans.py

我正在尝试使用setuptools安装此import click @click.group() def main(): ... @main.command() def hub_push(): ... @main.command() @click.argument('username', type=str, required=False) @click.argument('password', type=str, required=False) def hub_clean(username='', password=''): ... @main.command() @click.argument('force', type=bool, required=False) def hub_delete(force=False): ... if __name__ == '__main__': # necessary? main() 软件包,以便可以从命令行运行以下命令:

spartans

从技术上讲,我正在Windows上进行测试,但它应该能够在任何东西上运行。但是,我不知道如何使用setuptools获得此模式。

如果我只是简单地将目录更改为包含$ spartans hub_push $ spartans hub_clean --username ... $ spartans hub_delete --force 的文件夹,则单击模块可让我像这样使用它:

spartans.py

但是如果我想将$ spartans.py hub_push $ spartans.py hub_clean --username ... $ spartans.py hub_delete --force 与setuptools一起使用,我必须这样做:

entry_points

由于模块本身是不可调用的,所以我不知道如何创建上面想要的模式。看来我必须满足以下条件:

...
entry_points={
    "console_scripts": [
        "spartans = spartans.bin.spartans:hub_clean",
        # "spartans = spartans.bin.spartans",  # module not callable!
    ]
},

我将特定命令连接到模块的位置。但这是不对的。我看了一下文档,但它仍然只调用一个特定的函数:http://click.palletsprojects.com/en/5.x/setuptools/

如何获得$ spartans-hub_push $ spartans-hub_clean --username ... $ spartans-hub_delete --force 来调用setuptools cli程序包?

1 个答案:

答案 0 :(得分:1)

应为"spartans = spartans.bin.spartans:main",即使用click.group