Python Poetry 构建未打包 cli 文件

Python Poetry build not packaging cli file

我用以下结构创建了这个项目:

repo_dir
 - module_name
 - cli.py
 - pyproject.toml

cli.py 文件包含使用 Click 调用目录 module_name.

中的函数的代码

pyproject.toml 文件有 tool.poetry.scripts 部分来定义 cli .py 文件:

[tool.poetry.scripts]
cli = 'cli:main'

在文件 cli.py 中我有这个:

import click

@click.group()
def cli():
    ...


def main():
    cli(obj={})


if __name__ == '__main__':
    main()

然而,当我使用 poetry build 并在环境中安装 .whl 文件时,它会引发错误:

Traceback (most recent call last):
  File "/usr/local/bin/cooh", line 5, in <module>
    from cli import main
ModuleNotFoundError: No module named 'cli'

我认为出于某种原因,当我使用 poetry build 时,它没有打包 cli.py 文件,并且在不同目录的新环境中,该文件不存在,因此会引发此错误。


如何使用Poetry and Click打包CLI?

我找到的最简单的解决方案是将 cli.py 文件移动到 module_name 目录中:

repo_dir
 - module_name
   - cli.py
 - pyproject.toml

然后更改 pyproject.toml 以反映新结构:

[tool.poetry.scripts]
cli = 'module_name.cli:main'