PyInstaller 规范文件导入错误:解决“无名为模块”
尝试使用 PyInstaller 构建 Python 脚本时,您可能会遇到错误“ImportError:没有名为“blah”的模块”。当 PyInstaller 无法在可执行文件中包含所有必需的模块时,就会出现此问题。
规范文件配置
您生成的规范文件包含以下分析:
a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'), os.path.join(HOMEPATH,'support/useUnicode.py'), 'icinga.py'], pathex=['/home/user/projects/icinga_python/releases/v2.1'])
此分析识别要包含在可执行文件中的 Python 文件。但是,它似乎不包含来自第三方软件包的任何模块,例如“mysql”或“urllib2”模块。
动态导入
如果您Python 脚本动态导入模块,例如使用“importlib”模块,PyInstaller 可能无法将它们包含在您的可执行文件中。这是因为动态导入未在您的代码中显式声明。
解决错误
要解决此错误,您有两个选项:
python pyinstaller --hidden-import mysql.connector --onefile myscript.py
此命令将指示 PyInstaller 将 'mysql.connector' 模块包含在您的可执行文件中,即使它没有在您的代码中显式导入.
关于 --onefile 选项的注释
“--onefile”选项不会直接影响可执行文件中模块的包含。它只是将所有 PyInstaller 生成的文件打包到一个可执行文件中。
以上是为什么 PyInstaller 抛出'ImportError:没有名为'blah'的模块”以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!