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

Pipenv无法执行Python脚本及关联VSCode异常问题求助

Pipenv运行Python脚本异常问题解答

问题背景

我尝试通过Pipenv虚拟环境运行名为main.py的简单Python脚本,代码如下:

print("started.")

执行pipenv run ./main.py --verbose时,控制台无任何输出;在VSCode中运行该命令情况一致,预期输出"started."但无内容且程序直接终止。在CMD中运行带--verbose参数的命令时,出现错误:

[5772:0107/202720.999:ERROR:broker_win.cc(56)] Error reading broker pipe: The pipe has been ended. (0x6D)

单独用Python可正常运行该脚本,但希望用Pipenv管理包。已重装Python、Pipenv和VSCode,问题依旧;Pipenv shell内外运行结果一致。另外,运行pipenv run main.py时会自动打开VSCode,卸载VSCode后命令可正常执行;关闭VSCode时运行该命令,进程会持续不退出,关闭CMD会同时关闭VSCode。


1. 错误产生的原因

  • Windows系统中.py文件的默认打开程序被设置为VSCode,而非Python解释器。当Pipenv尝试直接运行main.py时,系统会调用VSCode打开脚本,而非用虚拟环境里的Python执行它,导致脚本未被执行,出现无输出或关联VSCode的异常行为。
  • 添加--verbose参数时,Pipenv把参数传递给了错误的程序(VSCode),VSCode的内部进程通信逻辑被打乱,从而抛出broker pipe错误。

2. broker pipe错误的含义

这是VSCode内部的进程通信异常:VSCode启动时会通过管道(pipe)实现主进程和辅助broker进程的通信,当Pipenv错误触发VSCode启动并传递了不兼容的参数时,broker进程的管道通信被意外中断,读取管道时就会提示“管道已终止”的错误。

3. 解决方法

  • 修复.py文件的默认关联程序:
    1. 右键点击main.py,选择「打开方式」→「选择其他应用」
    2. 勾选「始终使用此应用打开.py文件」,选择系统中对应版本的Python解释器(选python.exe,而非VSCode)
  • 明确指定Python解释器运行脚本:
    不用直接运行脚本文件,而是通过Pipenv调用虚拟环境的Python执行脚本,命令改为:
    pipenv run python main.py --verbose
    
    强制让Pipenv使用虚拟环境内的Python解释器执行脚本,绕开文件关联问题。

4. VSCode引发问题的原因及共存方案

  • 原因:VSCode安装时可能自动关联了.py文件,导致系统默认用VSCode打开Python脚本而非执行脚本。当Pipenv尝试直接运行.py文件时,系统调用VSCode,从而出现脚本未执行、进程关联VSCode的异常。
  • 共存方案:
    1. 按照上述方法修复.py文件的默认关联,确保默认用Python打开而非VSCode
    2. 在VSCode中配置Python解释器为Pipenv虚拟环境的Python:
      • 打开VSCode,按下Ctrl+Shift+P,输入「Python: Select Interpreter」
      • 选择对应Pipenv虚拟环境的解释器(通常显示为./venv/Scripts/python.exe或带有Pipenv标识的选项)
    3. 后续在VSCode中运行脚本时,直接用VSCode的运行功能,或在终端中使用pipenv run python main.py命令,避免直接运行.py文件触发系统关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:50:26