如何在shell脚本中运行“poetry shell”?

Lon*_*yen 9 linux python-poetry

我使用 Python Poetry 并需要自动化该过程。具体来说,每次我需要进入一个目录

cd /work/directory
Run Code Online (Sandbox Code Playgroud)

并生成一个诗歌外壳

poetry shell
Run Code Online (Sandbox Code Playgroud)

并再次转到另一个目录

cd /other/directory
Run Code Online (Sandbox Code Playgroud)

完成工作。

我很想用一个小脚本来自动执行此操作,例如

#!/bin/bash

cd /work/directory
poetry shell
cd /other/directory
# do work
Run Code Online (Sandbox Code Playgroud)

然而,每当我运行这个脚本时,我就会卡在poetry shell. 有没有像 bash 这样的选项,-c以便我可以执行以下操作?

poetry shell -c "cd /other/directory && do work"
Run Code Online (Sandbox Code Playgroud)

Dav*_*veR 13

您可能想使用诗歌虚拟环境运行 python 脚本。在这种情况下,我认为你应该使用简单的命令

poetry run {your_command}
Run Code Online (Sandbox Code Playgroud)

对于更实际的示例,您可以运行 python 脚本,如下所示

poetry run python myscript.py
Run Code Online (Sandbox Code Playgroud)

它将使用poetry您已经创建的虚拟环境poetry install


小智 4

我不确定跑步poetry shell到底意味着什么。激活虚拟环境可能足以满足您的需求。如果您想要做的不是在命令行上进行交互式工作,那么甚至可能不需要激活环境。

通常,您首先需要使用类似 的内容来标识虚拟环境的路径poetry env info --path。一旦您知道您可以从任何地方“激活它”:

source /path/to/venv/bin/activate
Run Code Online (Sandbox Code Playgroud)

或者(在大多数情况下)您可以直接使用该虚拟环境中的任何可执行文件,而无需先激活:

/path/to/venv/bin/python path/to/script.py
Run Code Online (Sandbox Code Playgroud)