我想问问,是否有人为我的问题提供解决方案或线索。
我正在使用PyCharm编辑器进行Python开发。每当我运行包含PyCharm中的os.system("xdg-open file.pdf")
的代码时,一切都会按预期进行。但是,每当我使用PyInstaller打包代码时,该命令都会失败,而不会出现任何错误消息或线索,发生了什么,做什么或从哪里开始搜索以解决此问题(我知道os.system()
命令没有捕获任何消息来自已启动的命令,但没有任何线索根本没有)。
我已经尽力确保一切都可以做。我尝试了其他启动器,例如exo-open
,mimeopen
;我试图从Python代码运行一个外部bash
脚本,该脚本包含上述各种组合的命令,我试图创建一个外部Python二进制文件(使用PyInstaller),该二进制文件仅执行os.system("xdg-open" + sys.argv[1])
命令(因为我在程序的其他位置调用了外部二进制文件,并且运行良好),无处可寻,这为什么不起作用。
当我尝试从bash使用纯命令xdg-open file.pdf
时,一切正常。 *)
因为我也为Linux和Windows编写程序,所以在Windows上不存在此故障。我在那里查看PDF文件命令os.system("start './file.pdf'")
,它发生了。
我不确定,此问题的根源是什么,可能是PyInstaller问题,也可能是系统问题。
有人有类似的经历,可能还有一些线索或解决方案吗?非常欢迎您的回复,非常感谢!
配置:
pip
安装)计算机是Lenovo ThinkPad T410。
*)也许会有所帮助,或造成更多混乱,但无论如何:在测试过程中,我还尝试从程序中运行纯终端,以手动传递xdg-open
命令。但是当我这样做时,没有错误消息,但是什么也没有发生。我还尝试过直接运行PDF查看器,从通用终端一切正常,但是从我的程序打开的终端运行PDF查看器,但是由于缺少图标而出现了很多与GTK相关的错误(并且file.pdf
并没有也可以打开),因此通常会失败(不存在图标,也没有打开文件(顺便说一句错误消息,如“打开mimetype application / octet-stream 失败”))。这种行为会导致一些用户/路径/环境问题,但是,我仍然完全不知道这是什么情况以及如何解决它。
P.S。我当然首先尝试了Google叔叔,但没有成功。是的,有可能我没有找到合适的问题,在这种情况下,请给我一些建议;)
答案 0 :(得分:0)
由于两个月前没有任何回应,所以似乎没有人对此问题感兴趣。
我仍然不确定是什么原因导致了这个问题,但现在看来,它是可行的,因此,仅出于我所写的证据,我认为这可能是造成这种不愉快行为的原因。
我最近将内核4.8更新为内核4.19.21,并且我已经尝试作为PDF查看器/编辑器Foxit Reader 2.4.4.0911(几天前下载)(https://www.foxitsoftware.com/downloads/),因为我具有此配置,因此请打开即使我仍在使用PyInstaller 3.4,程序中的PDF仍然有效。
我不确定,问题的根源是什么,因为我没有将Foxit Reader设置为默认的PDF查看器,并且它在其中打开,并且可能是某些内核/英特尔视频驱动程序问题的来源。这是因为我将Xreader删除为默认的PDF查看器。也许是mimetypes的问题(请注意,例如DoubleCommander或Mutt不尊重系统mimetypes设置,并尝试根据自己的意愿打开程序中的文件,而我仍然不知道为什么,如何更改它),谁知道,当我一个人待在这个问题上时。
在所有情况下,在具有上述配置的Linux Mint 18.2机器上,它现在都能按预期工作。
答案 1 :(得分:0)
这与此处提到的 PyInstaller 问题有关: https://github.com/pyinstaller/pyinstaller/issues/3668
这现在应该有效:
myEnv = dict(os.environ)
lp_key = 'LD_LIBRARY_PATH'
lp_orig = myEnv.get(lp_key + '_ORIG')
if lp_orig is not None:
myEnv[lp_key] = lp_orig
else:
lp = myEnv.get(lp_key)
if lp is not None:
myEnv.pop(lp_key)
subprocess.Popen(["xdg-open", "file.pdf"], env=myEnv)