windows - 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 没有任何运气。这可能是多处理模块中的错误吗?
解决方案
推荐阅读
- c# - 使用 moq 在 C# 中为 IAsyncEnumerable 创建模拟设置
- python - canvas.move 在多帧结构化类 tkinter 中不起作用
- onem2m - filterCriteria.filterOperation 是什么类型的?
- javascript - 为什么我在运行我的应用程序时收到“无法获取/错误”消息?
- java - 添加 InternalFrames 时,Java JFrame 未显示在输出中
- swift - 向 NSTableView 添加行时数组索引超出范围
- c# - 控制台应用程序内的计时器不会触发事件
- php - Wordpress WpForm自定义提交按钮以调用外部API(Json)
- python - Flask 未检测到 URLS 中的尾部反斜杠
- rest - 自托管 OWIN Web 服务 - 不听