我有一个简单的应用程序,它运行本地Flask Web服务器,并使用以下命令打开Web浏览器以在启动时显示它:
webbrowser.open('http://localhost:%d' % port, new=2, autoraise=True)
当我在开发模式下运行它时,它工作正常。但是,当使用pyinstaller打包并将其作为可执行文件运行时,我得到以下提示:
gvfs-open: http://localhost:5000: error opening location: No application is registered as handling this file
在两种情况下,浏览器的Web浏览器尝试的顺序是相同的:
'xdg-open', 'gvfs-open', 'gnome-open', 'x-www-browser', 'firefox'
我尝试使用webbrowser.get(NAME).open
使用特定命令,但没有一个起作用(Firefox除外)。
似乎这是pyinstaller的问题。是否可能某种环境变量丢失或没有导出到可执行文件?
我在Ubuntu 16.04上使用
命令使用python 3.5.2和pyinstaller 3.3.1pyinstaller --add-data="static:static" app.py
编辑:我已经确认环境变量确实被更改了:
print('XDG_DATA_DIRS: ' + os.environ.get('XDG_DATA_DIRS', 'not found'))
收益
/usr/share/ubuntu:/usr/share/gnome:/usr/local/share:/usr/share:/var/lib/snapd/desktop:/var/lib/snapd/desktop
处于开发模式和
SOURCE_DIR/dist/linux/app/share
。我将在pyinstaller github上创建一个问题。