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'
我用以下结构创建了这个项目:
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'