如何为python webbrowser设置BROWSER环境变量

时间:2014-09-16 17:33:59

标签: python python-webbrowser

我试图注册Firefox浏览器以在Windows上运行。根据Webbrowser的文档,"如果存在环境变量BROWSER,它将被解释为覆盖平台默认的浏览器列表,作为os.pathsep分隔的浏览器列表,以按顺序尝试#34;。我有以下内容:

import os
import webbrowser
from subprocess import call

os.environ["BROWSER"] = "C:\\FirefoxPortable\\FirefoxPortable.exe"
webbrowser.open('http://google.com')

这仍然会打开iexplorer(默认浏览器)。

此外:

>>> webbrowser._browsers
{'windows-default': [<class 'webbrowser.WindowsDefault'>, None], 'c:\\program files\\internet explorer\\iexplore.exe': [None, <webbrowser.BackgroundBrowser object at 0x04A18F90>]}
>>> webbrowser._tryorder
['windows-default', 'C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE']

我如何在这里使用Firefox?

来源:

# OK, now that we know what the default preference orders for each
# platform are, allow user to override them with the BROWSER variable.
if "BROWSER" in os.environ:
    _userchoices = os.environ["BROWSER"].split(os.pathsep)
    _userchoices.reverse()

    # Treat choices in same way as if passed into get() but do register
    # and prepend to _tryorder
    for cmdline in _userchoices:
        if cmdline != '':
            cmd = _synthesize(cmdline, -1)
            if cmd[1] is None:
                register(cmdline, None, GenericBrowser(cmdline), -1)
    cmdline = None # to make del work if _userchoices was empty
    del cmdline
    del _userchoices

# what to do if _tryorder is now empty?

2 个答案:

答案 0 :(得分:2)

请尝试以下代码:

    <script type="text/javascript">
var autocm = jQuery.noConflict();
autocm().ready(function() {
    autocm("#search").autocomplete("php/getvalues.php", {
        width: 500,
        matchContains: true,
        //mustMatch: false,
        //minChars: 0,
        //multiple: true,
        //highlight: true,
        //multipleSeparator: ",",
        selectFirst: false
    });
});(autocm);
</script>

答案 1 :(得分:2)

尝试了你的例子并得到了相同的结果:在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

非常有帮助,谢谢。