基于诗歌文档:
同样,如果您有命令行工具,
pytest
或者black
您可以使用poetry run pytest
使用黑色的建议方法是:
poetry run black myscript.py
但是,如果我只是使用,我不会注意到行为上有任何差异
black myscript.py
这两种方法有什么区别?
它允许您运行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.