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

将Linux下Python subprocess代码移植到Windows时遇WinError 10106错误求助

解决Windows下subprocess子进程WinError 10106报错问题

这个错误本质是Windows Winsock服务提供商加载失败,下面是几个针对性的解决方向:

  • 检查环境变量继承
    移植时如果手动构造了子进程的环境变量(比如直接用env={...}),会丢失系统默认的关键变量(如SystemRoot、包含系统组件的PATH路径)。正确做法是基于当前环境变量复制修改:

    import os
    import subprocess
    
    env = os.environ.copy()
    # 只修改需要调整的变量,比如添加自定义路径
    env["MY_CUSTOM_PATH"] = "C:/my/app"
    subprocess.run(["your_command"], env=env)
    
  • 重置Winsock组件
    系统层面的Winsock配置损坏是常见诱因,以管理员身份打开命令提示符,执行:

    netsh winsock reset
    

    执行完成后重启电脑,再测试代码。

  • 避免错误的进程创建参数
    不要随意设置creationflags参数(比如误用CREATE_NEW_PROCESS_GROUP等不匹配的标志),也确保在使用shell=True时,系统PATH中能找到cmd.exe。

  • 验证Python安装完整性
    如果是绿色版Python或安装时缺失组件,可能导致子进程初始化依赖缺失。卸载现有Python,重新安装官方版本,并勾选“Add Python to PATH”选项。

  • 检查标准流配置
    避免在subprocess.run()中设置异常的stdin/stdout/stderr值,比如不要直接关闭流(close_fds=True在Windows下有特殊限制),先尝试使用默认配置或明确设置为subprocess.PIPE。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:44:53