我正在使用具有以下结构的Poetry开发Python软件包:
/packagename
/packagename
/tests
__init__.py
test_packagename.py
__init__.py
packagename.py
pyproject.toml
所有程序包代码都在packagename.py中,该文件导入到__init__.py
中。
我想添加一个CLI,我的目标是在命令行中执行以下操作:
<packagename> <packagefunction>
为此,我使用适用于Python的click包,并将<packagefunction>
写入packagename.py
内为:
@click.command()
def packagefunction():
当前,我已将入口点添加到诗歌配置文件中,如下所示:
[tool.poetry.scripts]
<packagefunction> = '<packagename>:<packagefunction>'
并运行:
poetry run <packagefunction>
完美执行。
但是,我知道这不是正确的方法,我希望CLI用上面显示的命令执行。
答案 0 :(得分:1)
要实现您所追求的命令行,可以使用:
click.Group()
foreach($categories AS $category){
dd($category->shows); // List of `active` Shows
}
然后要使用该组,可以使用import click
@click.group()
def main():
"""packagename cli"""
装饰器,例如:
@main.command()
代替@main.command()
def packagefunction():
"""packagefunction subcommand"""
装饰器。
要安装诗歌,请安装@click.command()
命令并在packagename
模块中调用main
组:
packagename
代替:
[tool.poetry.scripts]
# command_name = module_for_handler : function_for_handler
<packagename> = '<packagename>:<main>'