You need to enable JavaScript to run this app. Windows 10下Python 3.x虚拟环境中subprocess.Popen为何调用全局Python可执行文件
优惠活动
大模型
产品
解决方案
定价
更多

Windows 10下Python 3.x虚拟环境中subprocess.Popen为何调用全局Python可执行文件

Windows 10 虚拟环境 subprocess 调用Python路径异常问题

以下是在Windows 10系统的Python 3.x虚拟环境中运行的脚本:

#!/usr/bin/env python
import sys, os, subprocess
 
print(sys.executable)
args = ["python", "-c", "import sys; print(sys.executable)"]
p = subprocess.Popen(args, stdout=None, env=os.environ)
p.wait()

在大多数系统中,两次调用print(sys.executable)会返回虚拟环境内python.exe的路径,运行输出示例如下:

C:> python test.py
C:\venv\Scripts\python.exe
C:\venv\Scripts\python.exe

但部分机器会出现路径不一致的异常表现:第一次调用返回虚拟环境的python.exe路径,第二次调用却指向系统全局安装的python.exe,输出示例如下:

C:> python test.py
C:\venv\Scripts\python.exe
C:\Users\me\AppData\Local\Programs\Python\Python38\python.exe

上述代码为简化后的测试版本,便于复现问题。实际业务场景中使用subprocess.Popen调用其他Python脚本时,会因为全局环境未安装虚拟环境对应的依赖包,出现模块导入失败问题。

已完成的排查操作:

  • 曾怀疑是PATH环境变量配置问题,但在subprocess.Popen调用前后打印PATH内容完全一致,两种场景下虚拟环境的venv/Scripts文件夹路径都排在全局Python安装路径之前
  • 尝试删除并重建虚拟环境,问题依旧复现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 12:36:01