我正在尝试使用 Poetry 和脚本选项来运行脚本。像这样:
pyproject.toml
[tool.poetry.scripts]
xyz = "src.cli:main"
文件夹布局
.
├── poetry.lock
├── pyproject.toml
├── run-book.txt
└── src
├── __init__.py
└── cli.py
然后我像这样执行安装:
❯ poetry install
Installing dependencies from lock file
No dependencies to install or update
如果我尝试运行该命令,则找不到(?)
❯ xyz
zsh: command not found: xyz
我在这里错过了什么吗?谢谢,
Poetry 可能会将脚本安装在您的用户本地目录中。例如,在 Ubuntu 上,这是
$HOME/.local/bin
。如果该目录不在您的路径中,您的 shell 将找不到该脚本。
旁注:通常最好在
src
目录中放置一个包含您的包名称的子目录。一般来说,您的 __init__.py
目录中最好不要有 src
。另请考虑将 cli.py
重命名为 __main__.py
。这将允许您的包使用 python -m package_name
作为脚本运行。
除了没有激活虚拟环境或通过
xyz
运行该别名 (poetry run xyz
) 之外,您所做的一切都是正确的。可以通过 poetry shell
激活 virtualenv。之后,xyz
应该从您的 shell 运行。
PS:@jisrael18的回答是完全正确的。通常,在
src
文件夹内会有另一个文件夹(这是你的主要 Python 模块)。
.
├── src
│ └── pyproj
│ ├── __init__.py
│ └── __main__.py
...