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

Windows系统WSL/Ubuntu环境下如何使用Python的webbrowser.open()?

在WSL/Ubuntu中使用Python webbrowser.open()无法打开Windows默认浏览器的解决方案

问题场景

在Windows机器上通过VS Code使用WSL/Ubuntu开发Python时,执行以下代码无任何反应且返回False:

import webbrowser
webbrowser.open('https://inventwithpython.com/')

核心原因是Linux子系统无法直接访问Windows系统设置的默认浏览器。目前有临时解决方案,但存在兼容性顾虑:

import subprocess
subprocess.run(["cmd.exe", "/c", "start", "https://inventwithpython.com/"])

基于webbrowser.open()的可行方案

方案1:配置WSL默认浏览器指向Windows浏览器

在WSL的shell中执行以下命令,将默认浏览器绑定到Windows端的浏览器(以Edge为例):

echo "export BROWSER='/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe'" >> ~/.bashrc
source ~/.bashrc

如果使用Chrome,替换路径为/mnt/c/Program Files/Google/Chrome/Application/chrome.exe。配置完成后,直接调用webbrowser.open()即可正常打开Windows默认浏览器。

方案2:在Python代码中直接指定浏览器路径

在代码中明确指定Windows浏览器的WSL挂载路径,绕过系统默认检测:

import webbrowser

# Edge浏览器示例
browser_path = '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe %s'
webbrowser.get(browser_path).open('https://inventwithpython.com/')

# Chrome浏览器示例
# browser_path = '/mnt/c/Program Files/Google/Chrome/Application/chrome.exe %s'
# webbrowser.get(browser_path).open('https://inventwithpython.com/')

方案3:关联WSL的xdg-open到Windows start命令

通过修改shell配置,让WSL的xdg-open工具调用Windows的start命令,webbrowser模块会默认使用xdg-open打开链接:

echo "xdg-open() { cmd.exe /c start \"\$*\" > /dev/null 2>&1; }" >> ~/.bashrc
source ~/.bashrc

配置后无需修改Python代码,直接使用webbrowser.open()即可触发Windows默认浏览器。

这些方案既保留了webbrowser.open()的原生API,又适配了WSL与Windows的跨环境调用,兼容性优于临时的subprocess方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:47:44