TL; DR:Sublime Text从webbrowser._browsers
获得的响应与我的终端不同。
这让我疯了。我使用了一个插件GitLink,它会打开你当前文件的GitHub链接。它依赖于Python的webbrowser
工具来打开网址。问题是我的默认浏览器是Chrome,但它会不断打开Firefox。
在我的终端中,如果我启动到python
或python3
,webbrowser.open_new_tab('https://stackoverflow.com')
将在Chrome中正确启动。 webbrowser._browsers
会正确地将'chrome'
列为我的浏览器之一。
但是,在Sublime Text控制台中,webbrowser._browsers
缺少Chrome。它列出了我真正想要的所有其他浏览器保存。是什么赋予了? Sublime Text如何获得与我在终端中运行python时不同的列表?如何让它匹配?
答案 0 :(得分:1)
你可以尝试几件事。
<强> 1。设置BROWSER环境变量:
正如Keith Hall所暗示的,可以通过设置BROWSER
环境变量来解决此问题。如果您不知道如何查找您的版本 - OSX改变了环境变量在某些时候的设置方式,因此对于不同版本的OSX有不同的方法。但是,我在Linux上,我的BROWSER
环境变量不设置,ST总是在我的默认浏览器中打开网址,这包括对webbrowser.open_new_tab()
的调用(我假设你看到的是GitLink
用于打开网址的内容,所以这可能无法解决问题。
<强> 2。修改GitLink(您安装的版本):
首先测试这是否有效 - 在Linux上运行正常。
将以下2行复制并粘贴到ST控制台:
import webbrowser
webbrowser.get("chrome").open_new_tab("http://www.google.com")
如果无法通过Google.com打开Chrome,请尝试:
# google-chrome: Chrome variant.
webbrowser.get("google-chrome").open_new_tab("http://www.google.com")
# macosx: uses the OSX default browser.
webbrowser.get("macosx").open_new_tab("http://www.google.com")
# links: generic; doubtful but worth trying at this stage.
webbrowser.get("links").open_new_tab("http://www.google.com")
完整的list of possible values可能会有所帮助。
另一种可能性是使用完整路径,请参阅此StackOverflow answer或尝试:
# Replace path with your path to Chrome if necessary.
webbrowser.register('chrome_path', None, webbrowser.BackgroundBrowser("/Applications/Google Chrome.app"))
webbrowser.get('chrome_path').open_new_tab(url)
一旦有效:
PackageResourceViewer: Open Resource
GitLink
GitLink.py
GitLink.py
将会打开... 如果您保存此文件(如果您在不保存的情况下关闭它,则根本不会发生任何事情),那么GitLink.py
的副本将保存在您的系统的此位置:ST_CONFIG/Packages/GitLink/GitLink.py
- 此版本的file将覆盖GitLink.py
的版本,该版本存储在Gitlink.sublime-package
文件中,Package Control将安装在Installed Packages
文件夹中。即使GitLink
包更新,.sublime-package
文件中的版本仍会被覆盖。没问题,你需要做的就是删除包含ST_CONFIG/Packages/GitLink/
文件的文件夹GitLink.py
,ST将开始使用.sublime-package
文件中的版本试。
修改很简单:
向下滚动到GitLink.py
的底部,您将在其中看到以下行:
if(args['web']):
webbrowser.open_new_tab(url)
只需将webbrowser.open_new_tab(url)
行更改为以下内容(如果需要,使用在控制台中运行的值替换"chrome"
):
if(args['web']):
webbrowser.get("chrome").open_new_tab(url)
保存文件,插件应该由ST立即更新(检查控制台的&#34;重新加载插件&#34;消息以确定是否需要)。该插件现在应该在Chrome中打开您的网址。
第3。在GitLink的GitHub页面上打开一个问题:
问题页面为here。说明您的问题并请求添加设置,以便用户可以指定Python的webbrowser
模块应使用哪个浏览器。
我建议你这样做,并在你的问题上添加一个StackOverflow页面的链接以供参考。