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)
在命令行之外。
有没有办法做到这一点?
通常,您只需在脚本中使用标准路径即可在虚拟环境中运行某些程序。例如,如果我有:
virtualenv .venv
Run Code Online (Sandbox Code Playgroud)
然后,我可以将某些东西安装到该虚拟环境中,而无需通过运行来激活它:
.venv/bin/pip install foo
Run Code Online (Sandbox Code Playgroud)
对于使用标准Python机制安装的所有软件,都应该如此。
小智 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)