繁体   English   中英

如何使用python子进程模块激活virtualenv?

[英]How to activate virtualenv using python subprocess module?

我正在尝试使用python的子进程模块调用shell脚本。 Shell脚本使用virtualenvwrapper激活virtualenv,然后调用python脚本。 最后调用的python脚本需要在virtualenv中安装库,并且崩溃了。

尝试再次在python脚本中激活virtualenv,但没有用

父Python代码-

command = "/home/arman/analysis_server/new_analysis/run"

output = subprocess.Popen([command], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

/运行脚本-

#!/bin/bash

export WORKON_HOME=~/Envs

source /usr/local/bin/virtualenvwrapper.sh

workon analytics

python /home/arman/analysis_server/new_analysis/AnalysisWrapper.py

AnalysisWrapper.py-

cmd = "python /home/arman/analysis_server/new_analysis/DataHandlerWrapper.py " + instrument + " &"

subprocess.Popen(cmd, shell=True, executable='/bin/bash', stdout=out, stderr=out)

DataHandlerWrapper.py脚本需要virtualenv,但是它崩溃了

我认为您的问题是Popen产生了一个子外壳,因此您无法在一个子进程中激活virtualenv并尝试在另一个子进程中使用它。

如果两者之间没有任何反应,则可以尝试将命令链接到同一进程中:

command = "/home/arman/analysis_server/new_analysis/run && python /home/arman/analysis_server/new_analysis/DataHandlerWrapper.py " + instrument + " &"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM