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

WSL Shell中wget可正常运行,Python subprocess调用失败问题排查

故障原因分析
  • 环境变量继承差异:交互式Shell会自动加载~/.bashrc、~/.profile这类配置文件里的网络代理、系统环境变量,但Python脚本(包括它启动的subprocess进程)默认是非交互式启动,不会加载这些配置,导致网络环境和手动执行Shell命令时完全不一样。
  • WSL1网络特殊性:WSL1依赖Windows的网络栈,手动Shell可能通过自动同步Windows代理等方式拿到了正确的网络配置,但Python进程没有继承到这些配置。
  • 隐藏的代理残留:你删除的只是pip单独设置的https_proxy/http_proxy,但Python进程或subprocess可能还继承了全局的错误代理变量,或者缺少必要的代理配置。
解决方法

方法1:在脚本里显式配置环境变量

直接给subprocess或requests传递正确的网络环境:

针对subprocess:

import subprocess
import os

# 复制当前环境变量,添加正确的代理(替换成你的实际代理地址,不需要就清空)
env = os.environ.copy()
env["http_proxy"] = "http://你的代理IP:端口"
env["https_proxy"] = "http://你的代理IP:端口"
# 不需要代理的话,就删掉这两个变量
# env.pop("http_proxy", None)
# env.pop("https_proxy", None)

# 用修改后的环境执行wget
subprocess.run(["wget", "https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken"], env=env, check=True)

针对requests:

import requests

# 设置代理,不需要就传空字典
proxies = {
    "http": "http://你的代理IP:端口",
    "https": "http://你的代理IP:端口"
}

response = requests.get("https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken", proxies=proxies)
with open("cl100k_base.tiktoken", "wb") as f:
    f.write(response.content)

方法2:让subprocess加载Shell配置

让subprocess以交互式Shell方式启动,自动加载~/.bashrc里的配置:

import subprocess

# 用bash -i 启动交互式Shell,加载配置后执行命令
subprocess.run(["bash", "-i", "-c", "wget https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken"], check=True)

方法3:对比环境变量找差异

  1. 在手动执行成功的WSL终端里,运行env | grep -i proxy,记录当前的代理配置。
  2. 在Python脚本里打印环境变量,对比差异:
import os
print("http_proxy:", os.environ.get("http_proxy"))
print("https_proxy:", os.environ.get("https_proxy"))

如果脚本里的代理和终端里的不一样,要么把正确的代理加到脚本里,要么在WSL的/etc/profile里添加全局代理配置,让所有进程都能继承。

方法4:彻底清空代理(无代理场景)

如果你的网络不需要代理,直接在脚本里清空所有代理相关的环境变量:

import os
import subprocess

# 删除所有代理变量
for key in list(os.environ.keys()):
    if key.lower() in ["http_proxy", "https_proxy", "all_proxy", "no_proxy"]:
        del os.environ[key]

# 执行下载命令
subprocess.run(["wget", "https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken"], check=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:56:01