【发布时间】:2019-08-07 10:03:51
【问题描述】:
我正在尝试使用 python 的 subprocess 模块调用 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,但它正在崩溃
【问题讨论】:
-
您是否收到错误消息?始终将完整的错误消息(从“Traceback”一词开始)作为文本(不是屏幕截图)提出问题(不是评论)。还有其他有用的信息。
-
你不能用
python /home/arman/analysis_server/new_analysis/DataHandlerWrapper.py instrument &将AnalysisWrapper.py转换为bash 脚本吗?甚至使用为DataHandlerWrapper.py激活 virtualenv 的代码。 -
不,实际上有一些检查和逻辑可以杀死 AnalysisWrapper.py 中过时的 DataHandlerWrapper 进程,之后它会使用给定的参数调用 DataHandlerWrapper
-
类似的......可能是的副本
-
并且没有错误消息,只是我看不到 DataHandlerWrapper 进程在此之后运行。如果直接从 ./run 之类的 shell 调用它,但从 python 代码调用时不起作用
标签: python bash subprocess virtualenvwrapper