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"
博客讨论了在Python应用打包时遇到配置文件缺失的错误,问题出在静态字符串导入导致PyInstaller未能识别。解决方案包括:1) 手动复制配置文件到指定路径,但升级时需重复操作;2) 改为模块导入方式解决静态字符串问题,但不适用于非Python配置文件;3) 使用PyInstaller的`--add-data`选项添加文件到打包。通过这些方法,可以成功解决配置文件打包问题。
4383

被折叠的 条评论
为什么被折叠?



