首页 > 解决方案 > 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

标签: pythonsqlalchemypyinstallerexecutable

解决方案


推荐阅读