如何为python webbrowser设置浏览器环境变量

如何为python webbrowser设置浏览器环境变量,python,python-webbrowser,Python,Python Webbrowser,我正在尝试注册Firefox浏览器以在Windows上运行。根据Webbrowser的文档,“如果存在环境变量BROWSER,则会将其解释为覆盖平台默认的浏览器列表,作为以os.pathsep分隔的浏览器列表进行尝试”。我有以下资料: import os import webbrowser from subprocess import call os.environ["BROWSER"] = "C:\\FirefoxPortable\\FirefoxPortable.exe" webbrows

我正在尝试注册Firefox浏览器以在Windows上运行。根据Webbrowser的文档,“如果存在环境变量BROWSER,则会将其解释为覆盖平台默认的浏览器列表,作为以os.pathsep分隔的浏览器列表进行尝试”。我有以下资料:

import os
import webbrowser
from subprocess import call

os.environ["BROWSER"] = "C:\\FirefoxPortable\\FirefoxPortable.exe"
webbrowser.open('http://google.com')
这仍然会打开iexplorer(默认浏览器)

此外:


请尝试以下代码:

webbrowser.register('firefox', None, webbrowser.GenericBrowser('C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe'))
a=webbrowser.get('firefox')
a.open("www.google.com")­­­­­

尝试了你的例子,得到了同样的结果:是在IE中打开的,而不是在Firefox中打开的。原因是,在导入
webbrowser
时,
BROWSER
环境变量尚未设置。通过简单地重新排序:

import os
# put it **before** importing webbroser
os.environ["BROWSER"] = "C:\\FirefoxPortable\\FirefoxPortable.exe"
import webbrowser
# from subprocess import call

webbrowser.open('http://google.com')
现在可以了。我通过在命令行上设置环境变量来实现这一点。注意:用引号括起路径不起作用

set BROWSER=C:\FirefoxPortable\FirefoxPortable.exe
确实有效

set BROWSER="C:\FirefoxPortable\FirefoxPortable.exe"
没有。很抱歉回答得太晚,但诊断与

>>> webbrowser._browsers
>>> webbrowser._tryorder

非常有帮助,谢谢。

假设给可执行文件的路径是有效的,您所拥有的应该可以工作。
webbrowser
模块的源代码包含在Python发行版中,并且位于
C:\PythonX\Lib\webbrowser.py
中,因此您可以复制它以进行调试以查找问题。在os.environ:中查找“BROWSER”中的行
。谢谢,这是非常有用的信息。查看源代码(我在上面已经包含了它),我看不到明显的问题,尽管我怀疑它与register函数有关。我试图在webbrowser模块代码本身内设置断点,但这不会导致中断。这是否可能,您如何使用python逐步完成更复杂的代码Bill假设您正确设置了断点,听起来就像是
webbrowser
模块中放置断点的代码从未执行过——所以请尝试找出这种情况。我不知道你把断点放在哪里,但也许
“浏览器”
不在
os.environ
…另一种方法是自己启动Firefox,而不是使用
webbrowser
模块。这很简单——问题中有一个使用
子流程
模块的例子。Martineau,谢谢你的帮助。我在这里得到了一个答案:。尊敬,-Bill请提供您的答案的一些附带说明和代码引用。我稍后将对此进行研究,但感谢您的回复。
set“BROWSER=C:\FirefoxPortable\FirefoxPortable.exe”
也应该有效!
set BROWSER="C:\FirefoxPortable\FirefoxPortable.exe"
>>> webbrowser._browsers
>>> webbrowser._tryorder