诗歌管理python软件包CLI

时间:2019-03-08 12:36:30

标签: python command-line-interface python-click python-poetry

我正在使用具有以下结构的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用上面显示的命令执行。

1 个答案:

答案 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""" 装饰器。

Poetry scripts

要安装诗歌,请安装@click.command()命令并在packagename模块中调用main组:

packagename

代替:

[tool.poetry.scripts]
# command_name = module_for_handler : function_for_handler
<packagename> = '<packagename>:<main>'