如何将整个 click cli 模块与 setuptools 集成 entry_points
how to integrate a whole click cli module with setuptools entry_points
在 spartans/bin/
下,我有一个名为 spartans.py
的 click
cli 模块,如下所示:
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()
我正在尝试使用 setuptools 安装这个 spartans
包,这样我就可以 运行 从命令行使用这些命令:
$ spartans hub_push
$ spartans hub_clean --username ...
$ spartans hub_delete --force
从技术上讲,我正在 windows 上进行测试,但它应该能够 运行 像那样对任何东西进行测试。但是,我不知道如何使用 setuptools 获取此模式。
如果我只是将目录更改为包含 spartans.py
的文件夹,点击模块让我可以像这样使用它:
$ spartans.py hub_push
$ spartans.py hub_clean --username ...
$ spartans.py hub_delete --force
但是如果我想将 entry_points
与设置工具一起使用,我必须这样做:
...
entry_points={
"console_scripts": [
"spartans = spartans.bin.spartans:hub_clean",
# "spartans = spartans.bin.spartans", # module not callable!
]
},
由于模块本身不可调用,所以我不知道如何创建上面我想要的模式。看来我必须满足于这样的事情:
$ spartans-hub_push
$ spartans-hub_clean --username ...
$ spartans-hub_delete --force
我将特定命令连接到模块的位置。但这不可能是对的。我查看了文档,但它仍然只调用了一个特定的函数:http://click.palletsprojects.com/en/5.x/setuptools/
如何让 setuptools
调用 click
cli 程序包?
应该是"spartans = spartans.bin.spartans:main"
,即使用click.group
在 spartans/bin/
下,我有一个名为 spartans.py
的 click
cli 模块,如下所示:
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()
我正在尝试使用 setuptools 安装这个 spartans
包,这样我就可以 运行 从命令行使用这些命令:
$ spartans hub_push
$ spartans hub_clean --username ...
$ spartans hub_delete --force
从技术上讲,我正在 windows 上进行测试,但它应该能够 运行 像那样对任何东西进行测试。但是,我不知道如何使用 setuptools 获取此模式。
如果我只是将目录更改为包含 spartans.py
的文件夹,点击模块让我可以像这样使用它:
$ spartans.py hub_push
$ spartans.py hub_clean --username ...
$ spartans.py hub_delete --force
但是如果我想将 entry_points
与设置工具一起使用,我必须这样做:
...
entry_points={
"console_scripts": [
"spartans = spartans.bin.spartans:hub_clean",
# "spartans = spartans.bin.spartans", # module not callable!
]
},
由于模块本身不可调用,所以我不知道如何创建上面我想要的模式。看来我必须满足于这样的事情:
$ spartans-hub_push
$ spartans-hub_clean --username ...
$ spartans-hub_delete --force
我将特定命令连接到模块的位置。但这不可能是对的。我查看了文档,但它仍然只调用了一个特定的函数:http://click.palletsprojects.com/en/5.x/setuptools/
如何让 setuptools
调用 click
cli 程序包?
应该是"spartans = spartans.bin.spartans:main"
,即使用click.group