You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10下Python创建子进程失败:ImportError问题求助

解决Windows 10 Python 3.6.5下multiprocessing的ImportError问题

首先先把你的测试代码和报错信息整理出来,方便定位问题:

你的测试代码

from multiprocessing import Process
def f(name):
    print ('hello', name)
if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

报错信息

File "J:\Programs\Python\Python36\lib\multiprocessing\context.py", line 321, in _Popen from .popen_spawn_win32 import Popen

ImportError: cannot import name 'Popen'

这个报错在Windows平台的Python 3.6版本里并不少见,我整理了几个最可能的原因和对应的解决方案,你可以逐一尝试:

1. 排查模块命名冲突

这是最常见的诱因:

  • 绝对不要把你的脚本文件名命名为multiprocessing.py,否则Python会优先导入你自己的脚本,而非标准库的模块,直接导致内部导入逻辑崩溃。
  • 同时检查脚本所在目录下,是否存在名为multiprocessing的文件夹,或者popen_spawn_win32.py的独立文件,这些都会干扰标准库的正常导入流程。

如果发现有重名的文件/文件夹,修改名称后重新运行脚本即可。

2. 检查Python安装文件是否损坏

报错提示找不到popen_spawn_win32.py里的Popen类,大概率是Python安装目录下的相关文件缺失或损坏:

  • 打开你的Python安装路径J:\Programs\Python\Python36\lib\multiprocessing\,确认是否存在popen_spawn_win32.py文件,且文件内容完整无乱码。
  • 如果文件缺失或内容异常,可以通过Windows控制面板的「程序和功能」找到Python 3.6.5,选择「修复」选项来修复安装;若修复无效,直接重新下载Python 3.6.5的官方安装包进行重装。

3. 避免路径中的特殊字符

旧版本Python(比如3.6)在Windows下对包含中文、空格或特殊字符的路径支持不够友好,容易引发模块导入失败:

  • 把你的测试脚本移动到纯英文、无空格的路径下,比如C:\PythonScripts\test_multiprocess.py,再运行试试。

4. 显式指定多进程启动方式

Windows下Python 3.6默认使用spawn作为多进程启动方式,你可以尝试显式指定启动方式,或者切换到forkserver:
修改代码如下:

import multiprocessing
# 显式指定启动方式
multiprocessing.set_start_method('spawn')

from multiprocessing import Process
def f(name):
    print ('hello', name)
if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

如果以上方法都无效,建议你升级Python版本到3.7及以上(Python 3.6已停止官方维护),新版本对Windows多进程的兼容性有明显提升,大概率能解决这个问题。

内容的提问来源于stack exchange,提问作者Smithy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:59:18