had*_*adi 3 python subprocess virtualenv
我有一个名为 virtualenv 的虚拟环境'venv',它已激活:
(venv)>
Run Code Online (Sandbox Code Playgroud)
我编写了将在 virtualenv ( main.py) 中运行的代码:
import subprocess
result = subprocess.run('python other.py', stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
但是当我运行main.py文件时:
(venv)> python main.py
Run Code Online (Sandbox Code Playgroud)
subprocesspython other.py不在virtualenv ie 中执行命令 ( )venv
如何subprocess在当前virtualenv会话中运行命令?
例如,这就是为什么ssh-agent需要使用它来调用它在输出上发出的 shell 命令。eval "$(ssh-agent -s)"因此,您在这里要求的字面意思是不可能的。
幸运的是,这也是不必要的。
这意味着您实际上不需要使用激活了 virtualenv 的同一个 shell 来启动旨在使用解释器/库/等的新 Python 解释器。来自该 virtualenv。
subprocess.run必须传递一个列表,或者shell=True必须使用。要么这样做(更好!)
import subprocess
result = subprocess.run(['python', 'other.py'], stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
或者这个(更糟糕!)
import subprocess
result = subprocess.run('python other.py', stdout=subprocess.PIPE, shell=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5056 次 |
| 最近记录: |