当前位置:   article > 正文

【已解决】Python打包成exe.后无法访问程序所在的路径 No such file or directory:[27168] Failed to execute script ‘main‘ d_failed to execute script 'main' due to unhandled e

failed to execute script 'main' due to unhandled exception!

目录

遇到的问题

解决方法 

    方法一 :更新pyinstaller的版本

    方法二:更改打包命令的参数

    方法三:使用sys来获取exe.所在路径


遇到的问题

         最近在用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的参数和相关的文章后,参考了两种方法,分别是以下两种打包方式。

  1. pyinstaller --hidden-import=pkg_resources -F main.py   #对某些错误进行屏蔽
  2. pyinstaller -D -w main.py  #主文件直接导入文件夹内包

        但是换了几种打包方式后发现问题仍然存在,故判断问题应该不在打包上。

    方法三:使用sys来获取exe.所在路径

        研究了很久发现,原来python的exe.执行的时候会自己生成一个临时路径来运行,所以自然拿不到exe.目录的路径,这时我们需要更改一下代码,使用sys.argv来让exe.在运行时正确获取自己所在的路径。

current_directory = os.path.dirname(os.path.realpath(sys.argv[0]))

        将路径变量的获取改为如上的方式后,再次打包exe.并执行,成功获取了正确的路径并得出结果,问题成功解决。

        

          有用的话点个赞再走吧(⊙﹏⊙)
       

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/590921
推荐阅读
相关标签
  

闽ICP备14008679号