【发布时间】:2017-10-27 15:31:22
【问题描述】:
我正在使用 virtualenv 运行一个程序。但是这里生成的 multiprocessing.Process 默认使用系统 python。如何强制它使用 virtualenv python。
import os
from multiprocessing import Process
def function1():
# do_something_here
p = Process(func2(), args=(param,))
p.start()
return something
def func2(param):
os.system("which python")
这里打印“/usr/bin/python”。但我需要它来使用 virtualenv python。
【问题讨论】:
-
你确定父进程使用 virtualenv python 启动?
-
@georgexsh 是的。实际上这些函数是烧瓶应用程序的一部分。
-
我测试了上述程序的一个固定版本(例如你没有
func2()作为进程参数但func2,以及其他一些修复),它确实返回了virtualenv版本。尝试在生成进程之前将os.system("which python")添加到主程序中,看看那里会发生什么。 -
@georgexsh 我正在使用 sudo 运行它。默认情况下,如果您使用 sudo,那么它将使用系统 python。所以,我使用“sudo venv/bin/python main.py”来运行程序。即使我在这里使用 venv 的 python,它也会为“os.system('which python')”返回“/usr/bin/python”。我不明白这种行为。
-
@Kumaran 请注意您接受的答案,这是不准确的。
标签: python virtualenv python-multiprocessing