赞
踩
目录
最近在用python写一个脚本,其中用了os来获取相对路径的方式来获取当前路径并搜索文件名的方式来找到目标文件的路径,在编译时可以成功运行,但是在我用pyinstaller将其打包成exe.后再运行时却会发生报错。
No such file or directory:[27168] Failed to execute script 'main' due to unhandled exception!
pyinstaller --onefile main.py
该报错反应的是程序找不到相应路径的错误,为解决这个问题,我翻阅了相关文章和pyinstaller的相关参数后,用了几种方法最终成功解决了该问题。
更新pyinstaller的版本至最新版,可以将原来的pyinstaller卸载后在命令行重新安装,但是更新至最新版本之后问题仍然存在。
看了pyinstaller的参数和相关的文章后,参考了两种方法,分别是以下两种打包方式。
- pyinstaller --hidden-import=pkg_resources -F main.py #对某些错误进行屏蔽
-
- pyinstaller -D -w main.py #主文件直接导入文件夹内包
但是换了几种打包方式后发现问题仍然存在,故判断问题应该不在打包上。
研究了很久发现,原来python的exe.执行的时候会自己生成一个临时路径来运行,所以自然拿不到exe.目录的路径,这时我们需要更改一下代码,使用sys.argv来让exe.在运行时正确获取自己所在的路径。
current_directory = os.path.dirname(os.path.realpath(sys.argv[0]))
将路径变量的获取改为如上的方式后,再次打包exe.并执行,成功获取了正确的路径并得出结果,问题成功解决。
有用的话点个赞再走吧(⊙﹏⊙)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。