3

基于诗歌文档

同样,如果您有命令行工具,pytest或者black您可以使用poetry run pytest

使用黑色的建议方法是:

poetry run black myscript.py

但是,如果我只是使用,我不会注意到行为上有任何差异

black myscript.py

这两种方法有什么区别?

4

1 回答 1

5

它允许您运行black(或之后的任何命令run)安装在您的虚拟环境中,而无需先激活您的虚拟环境

相关说明在poetry run文档中(强调我的):

run命令在项目的 virtualenv中执行给定的命令。

假设您有一个带有 main.py的诗歌演示项目,并且您安装了:black

poetry-demo$ ls
README.rst     main.py        poetry.lock    poetry_demo    pyproject.toml tests

poetry-demo$ poetry add black
The following packages are already present in the pyproject.toml and will be skipped:

  • black

...

如果您没有首先激活您的虚拟环境(即poetry shell)并且如果您没有black在系统上的其他任何地方安装,那么简单地做black file.py会失败:

poetry-demo$ which black

poetry-demo$ black main.py
-bash: black: command not found

但是,poetry run即使没有激活您的虚拟环境,您也可以运行black

poetry-demo$ poetry run black main.py
All done! ✨  ✨
1 file left unchanged.

您感到困惑的根源可能是因为您已经激活了虚拟环境,所以实际上没有区别:

poetry-demo$ poetry shell
Spawning shell within /path/to/virtualenvs/poetry-demo-hCA44HQ0-py3.8
poetry-demo$ . /path/to/virtualenvs/poetry-demo-hCA44HQ0-py3.8/bin/activate

(poetry-demo-hCA44HQ0-py3.8) poetry-demo$ black main.py
All done! ✨  ✨
1 file left unchanged.

(poetry-demo-hCA44HQ0-py3.8) poetry-demo$ poetry run black main.py
All done! ✨  ✨
1 file left unchanged.
于 2021-10-27T12:59:24.767 回答