pyinstaller打包程序, 找不到文件路径的问题

0.问题描述

报错内容为: [Errno 2] Unable to load configuration file (No such file or directory): 'C:\\Project\vs-api\dist\app\app\config\setting.py'

1. 解决方案

百度查找, 目前搜到的都是一些相对路径绝对路径产生的问题, 经过审计代码, 该项目并不存在该问题.

于是想到了第一个解决方案1

1.1 解决方案①: 直接将原先项目中的配置文件拷贝到, 提示缺失文件的路径中.(经测试, 可以解决)

缺点: 每次升级源码 -> 打包 都要进行一次手动的 复制粘贴文件, 很麻烦.

1.2 解决方案②: 具体如下(经测试, 可以解决)

发现原因
配置文件导入的问题, 下方是问题出现的原因

    app.config.from_pyfile('config/secure.py')
    app.config.from_pyfile('config/setting.py')

分析:
代码的导入是静态的字符串的形式的导入的, pyinstaller并不会识别出该文件的存在, 只会当作普通的字符串, 导致没有将 两个配置文件进行处理打包.

找到了问题的根源, 可以思考为什么其它.py文件可以被导入?可以猜测是因为import模块触发被pyinstaller识别.

于是得到解决方案, 将字符串导入改为python的模块导入

from app.config import secure, setting
app.config.from_object(secure)
app.config.from_object(setting)

缺点: 如果配置文件不是python文件还是无法解决问题

1.3. 解决方案③: 使用 --add-data “【本地文件路径】;【打包后的项目目录】”(经测试, 可以解决)

需要注意: 前面填的是本地文件,而不是目录;后面填的是打包后的目录,即文件夹,而不是文件。

例如: 将本地的test.db文件,添加到打包后的项目目录./app/models/db

pyinstaller app-t.py --add-data "F:\\Local\\test.db;.\\app\\models\\db"

你可能感兴趣的:(日常BUG,python,前端,大数据)