首页 > 解决方案 > windows上的python多处理似乎脱离了venv

问题描述

我在依赖于 wheel entry_points 的 Windows 上构建了一个 python3 应用程序,因为它们是获取可执行 .exe 文件的简单方法。我使用 venv(python3 中内置的虚拟环境模块)。我试图找到另一个入口点 excutalbe 相对于我自己的sys.prefix. 这很顺利,直到我将代码移动到 multiprocessing.Process 以实现并行性。然后我再也找不到我的切入点了。事实证明,mp.Process 不是由 venv 解释器生成的。这是重现该问题的代码:

import multiprocessing, sys

def run():
    print("worker exe:",sys.executable)

if __name__ == '__main__':
    print("main exe:",sys.executable)
    multiprocessing.Process(target=run).start()

我从中得到的输出是:(在 Windows 10 上)

main exe: C:\venv\Scripts\python.exe
worker exe: C:\Users\simon\AppData\Local\Programs\Python\Python37\python.exe

所以看起来多处理模块脱离了虚拟环境!如何让进程使用 venv 解释器启动?我试过设置 multiprocessing.set_executable 没有任何运气。这可能是多处理模块中的错误吗?

标签: windowspython-multiprocessingpython-3.7

解决方案


推荐阅读