如何从 pyproject.toml 安装脚本?

How to install scripts from pyproject.toml?

我的 pyproject.toml

中有这个片段
[tool.poetry.scripts]
devel = "uvicorn api:app --reload"
prod = "uvicorn api:app"

我按照poetry documentation

安装
(wowtcg-tracker-api-dIKBwUYp-py3.10) bastakka@Karel-NTB:/m/c/U/b/D/P/I/w/wowtcg-tracker-api (main↓2|✚9…9)
» poetry install
Installing dependencies from lock file

Package operations: 38 installs, 0 updates, 0 removals

  • Installing idna (3.3)
   ...
  • Installing yapf (0.32.0)
(wowtcg-tracker-api-dIKBwUYp-py3.10) bastakka@Karel-NTB:/m/c/U/b/D/P/I/w/wowtcg-tracker-api (main↓2|✚9…9)
» 

但是这个命令没有生成脚本。

诗歌不能运行他们

…-tracker-api-dIKBwUYp-py3.10) bastakka@Karel-NTB:/m/c/U/b/D/P/I/w/wowtcg-tracker-api (main↓2|✚9…9)
» poetry run prod

  ModuleOrPackageNotFound

  No file/folder found for package wowtcg-tracker-api

  at ~/.poetry/lib/poetry/_vendor/py3.10/poetry/core/masonry/utils/module.py:63 in __init__
       59│                             "from": str(src.relative_to(self._path)),
       60│                         }
       61│                     ]
       62│                 else:
    →  63│                     raise ModuleOrPackageNotFound(
       64│                         "No file/folder found for package {}".format(name)
       65│                     )
       66│ 
       67│         for package in packages:
…-tracker-api-dIKBwUYp-py3.10) bastakka@Karel-NTB:/m/c/U/b/D/P/I/w/wowtcg-tracker-api (main↓2|✚9…9)
»

并且venv bin中也有none

…-tracker-api-dIKBwUYp-py3.10) bastakka@Karel-NTB:/m/c/U/b/D/P/I/w/wowtcg-tracker-api (main↓2|✚9…9)
» ls /home/bastakka/.cache/pypoetry/virtualenvs/wowtcg-tracker-api-dIKBwUYp-py3.10/bin
activate          dotenv*                  pip*               pyreverse*   watchgod*
activate.csh      epylint*                 pip3*              python@      wheel*
activate.fish     get_objgraph*            pip-3.10*          python3@     wheel3*
activate.nu       httpx*                   pip3.10*           python3.10@  wheel-3.10*
activate.ps1      isort*                   prisma*            symilar*     wheel3.10*
activate_this.py  isort-identify-imports*  prisma-client-py*  undill*      yapf*
deactivate.nu     normalizer*              pylint*            uvicorn*     yapf-diff*
…-tracker-api-dIKBwUYp-py3.10) bastakka@Karel-NTB:/m/c/U/b/D/P/I/w/wowtcg-tracker-api (main↓2|✚9…9)
»

我是不是漏掉了一些需要的东西或者做错了什么?

tool.poetry.scripts 用于 "scripts or executables that will be installed when installing the package"。您必须将 poetry run 前缀删除到 运行 它们。

对于开发脚本,我推荐 taskipy。例如

# pyproject.toml
[tool.taskipy.tasks]
devel = "uvicorn api:app --reload"
prod = "uvicorn api:app"

然后你可以运行像poetry run task devel