python - Pyinstaller 在导入 sqlalchemy 时给出 ModuleNotFoundError
问题描述
我正在使用 pyinstaller 将 python 脚本转换为可执行文件。我成功创建了 .exe 文件,但是当我运行它(在 Windows 中)时,cmd 返回错误:ModuleNotFoundError: No module named 'sqlalchemy' [16964] Failed to execute script scriptname
Sqlalchemy 是脚本中最后一个导入的模块(cx_Oracle、pandas、其他内部模块导入成功)。Sqlalchemy 存储在与我的其他模块相同的目录中。
其他消息来源建议导入 sqlalchemy.sql.default_comparator 或尝试将 sqlalchemy 模块作为隐藏的导入参数放入。我尝试在不同的尝试中同时添加 sqlalchemy 和 sqlalchemy.sql.default_comparator 作为隐藏的导入参数,但都没有解决问题。
即 pyinstaller --onefile scriptname.py --hiddenimports=sqlalchemy
我还阅读了 pyinstaller 创建的 build 文件夹中的 xref-scriptname html 文档,试图弄清楚为什么 sqlalchemy 没有导入但无法弄清楚。
任何关于如何让这个可执行文件导入 sqlalchemy 的建议将不胜感激
编辑:回答我想出了一个解决方法,如果将来有人遇到这个问题:我构建了没有 --onefile 参数的可执行程序。即:pyinstaller scriptname.py。这在一个文件夹中构建了一个可执行的 .exe 文件,其中包含运行该文件所需的所有内容,而不是将所有内容编译到一个文件中。然后我将我的 sqlalchemy 模块文件夹从 site_packages 复制并粘贴到我的 pyinstaller dist 文件夹中。这有效 - 当用户现在运行该程序时,.exe 程序在本地找到 sqlalchemy
解决方案
推荐阅读
- python - 从 pandas 日期时间列中提取唯一的月度周期
- angular - 如何在角度 6 中将插值数据绑定到 ngModel
- mono - Mono 应用程序在我的 Raspberry Pi 上启动时不会运行
- java - Android Java:无法在 SD 卡上创建文件夹
- angular - Angular Rxjs 可观察链与 ngrx 存储
- reactjs - 无法将元掩码注入的当前提供程序获取到常量中
- c# - 如何将数字字符串解析为十进制并将其转换回字符串而不会有任何损失?
- javascript - 从内联元素访问 Web 组件中的类函数
- c++ - 当我可以创建共享指针时,为什么我不能创建指向数组的唯一指针?
- eclipse - IPerspectiveListener 未使用 savePerspectiveAs() 调用,还有其他选择吗?