PyInstaller打包多.py脚本为单文件报错:找不到settings.py
解决PyInstaller打包后找不到settings.py的问题
修正pathex路径
你的Spec文件中pathex仅包含虚拟环境的site-packages目录,缺少项目自身的src路径,导致PyInstaller无法扫描到src下的自定义模块。更新pathex,将项目的src目录添加进去:pathex=['c:\\Users\\name\\python_projects\\projectname\\src', 'c:\\Users\\name\\python_projects\\projectname\\.venv\\Lib\\site-packages'],调整datas配置
如果settings.py是作为Python模块被导入的(而非以普通文件形式读取),当前的datas配置属于多余操作——PyInstaller会自动收集被导入的Python模块。可以暂时注释掉这行配置,验证问题是否解决:# datas=[('src\\projectname\\', 'src')],若settings.py是作为配置文件被代码直接读取(比如用
open()方法),则需要确保datas的目标路径与代码中读取的路径一致,示例如下:datas=[('c:\\Users\\name\\python_projects\\projectname\\src\\projectname\\settings.py', '.')],该配置会将settings.py打包到可执行程序的同级目录,匹配代码中的读取路径。
手动添加hiddenimports
如果PyInstaller的静态分析未识别到settings.py的导入(比如代码中使用了动态导入),可以手动将其加入hiddenimports:hiddenimports=['projectname.settings'],这里使用完整的模块路径,适配主脚本所在的projectname目录层级。
重新打包验证
修改完Spec文件后,执行以下命令重新打包:pyinstaller your_spec_file.spec运行生成的可执行程序,检查是否仍存在找不到settings.py的提示。
内容的提问来源于stack exchange,提问作者Jim Rutter
相关产品推荐
相关产品推荐

