pyinstaller 打包exe程序读不到配置文件No such file

Posted vhills

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyinstaller 打包exe程序读不到配置文件No such file相关的知识,希望对你有一定的参考价值。

    挺久没更新博客的,一来之前是觉得才疏学浅,记录下来的太简单没人看。二来时间上不是很充裕(不是借口,有时间打游戏,没时间总结)

    偶然有一次发现同事在搜索解决问题的时候正在看我博客的解决思路,很奇妙的感觉。为避免重复踩坑,我先踩的我填上。

顺便补上在pyinstaller打包exe的过程中,很容易遇到以下问题

1、打包不成功   解决方法:先检查下打包目录是否含有中文

 

然后第二个是最近踩的,希望弄个可配置化的程序(当用户需求变动可自行配置的),然而打包后执行却出现了问题——简单来说找不到配置文件No such file

(我是封装了简易的发邮件exe,配置文件放exe同目录)

先cd进入exe所在目录再调用发送,正常。

以下方式“目录exe”,就失败了。

技术分享图片

 

谷歌百度之,发现配置文件的读取目录有问题。写程序的时候默认是同级目录,但是cmd调用的时候,应该是C:/user/vhills下进行因此就会找不到你放在程序目录里的配置文件

所以解决方案:

1、用os.path.realpath(sys.argv[0])

 

以下为前人总结的目录问题,自己手动试着做py执行和exe执行找差异,应该就能发现问题了(https://yutuo.net/archives/95be5c27e092b812.html   这个说得挺好的)

import os, sys

print(‘__file__:‘, __file__)
print(‘realpath of __file__:‘, os.path.realpath(__file__))
print(‘sys.executable:‘, sys.executable)
print(‘realpath of sys.executable:‘, os.path.realpath(sys.executable))
print(‘sys.argv[0]:‘, sys.argv[0])
print(‘realpath of sys.argv[0]:‘, os.path.realpath(sys.argv[0]))
print(‘sys.path[0]:‘, sys.path[0])
print(‘realpath of sys.path[0]:‘, os.path.realpath(sys.path[0]))

  

参考

1、https://yutuo.net/archives/95be5c27e092b812.html

2、https://segmentfault.com/a/1190000009305457

 

以上是关于pyinstaller 打包exe程序读不到配置文件No such file的主要内容,如果未能解决你的问题,请参考以下文章

pyinstaller打包exe后给别人总运行不了,怎么破

python记一次pyinstaller打包exe系统找不到指定路径

Pyinstaller打包配置UPX缩小程序包大小,打包时出现UPX is not available处理方法

Pyinstaller打包配置UPX缩小程序包大小,打包时出现UPX is not available处理方法

python-pyinstaller打包

pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行