zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Python:遍历文件目录及子目录,并批量改变文件名称
    python:利用递归遍历文件夹所有文件(包括子文件夹里的文件)
    python文件,文件夹操作
    Ubuntu安装vim报错的的处理
    Centos7安装Chrome
    Centos7更换阿里yum源
    CentOS7设置启动默认界面方法
    Vim快捷键学习---记性不行了,留这里备查
    第7-9章作业汇总
    第四次作业---第三题陈岩岩
  • 原文地址:https://www.cnblogs.com/vhills/p/9302382.html
Copyright © 2011-2022 走看看