有没有一种单行方式可以在Python venv中运行命令?

oro*_*ome 5 python command-line-interface virtualenv

我有一个命令只能在已配置的Python虚拟环境中正确运行(按预期)。我知道我可以像这样运行命令

$ cmd args
Run Code Online (Sandbox Code Playgroud)

一旦我激活了venv。但是(由于我使用的工具的限制),我需要在一行中激活运行(并取消激活?):等同于运行

$ activate_somehow cmd args
Run Code Online (Sandbox Code Playgroud)

在命令行之外。

有没有办法做到这一点?

lar*_*sks 5

通常,您只需在脚本中使用标准路径即可在虚拟环境中运行某些程序。例如,如果我有:

virtualenv .venv
Run Code Online (Sandbox Code Playgroud)

然后,我可以将某些东西安装到该虚拟环境中,而无需通过运行来激活它:

.venv/bin/pip install foo
Run Code Online (Sandbox Code Playgroud)

对于使用标准Python机制安装的所有软件,都应该如此。

  • “python3 -m venv”是否有“pipenv run”样式机制? (3认同)

小智 5

查看生成的bin/activate脚本后,似乎与 python 唯一相关的是VIRTUAL_ENV变量,所以这应该足以开始:

$ env VIRTUAL_ENV=path/to/venv python ...
Run Code Online (Sandbox Code Playgroud)

请注意,目标环境目录中的 python 可执行文件bin只是全局安装的解释器的符号链接,它除了设置进程可执行路径之外什么也不做。假设程序不使用它,那么使用主二进制文件本身似乎是无害的。如果您安装了一个软件包,该软件包又安装了一些可执行文件,只需指定绝对路径:

$ env VIRTUAL_ENV=path/to/venv path/to/venv/bin/executable
Run Code Online (Sandbox Code Playgroud)