PyInstaller打包含PyQt5、SQLAlchemy的Python代码时出现unexpected EOF报错求助
问题根因
该报错为PyInstaller内置hook-sqlalchemy.py钩子与高版本SQLAlchemy存在兼容性问题导致:钩子尝试解析SQLAlchemy支持的方言列表时返回空值,执行eval逻辑时触发语法错误。
可行解决方案
方案1:升级PyInstaller到最新版本,新版本已修复该兼容问题
执行命令:pip install --upgrade pyinstaller升级完成后重新执行打包命令测试即可。
方案2:手动修改钩子文件跳过解析逻辑
打开报错提示的钩子文件路径:C:\Users\username\AppData\Local\Programs\Python\Python39\lib\site-packages\PyInstaller\hooks\hook-sqlalchemy.py,找到第32行附近的dialects = eval(dialects.strip())代码段,直接替换为你实际用到的SQLAlchemy方言列表即可,示例(使用pyodbc连接SQL Server场景):dialects = ['sqlalchemy.dialects.mssql.pyodbc']如用到多种数据库,按格式补充对应方言路径即可。
方案3:打包时指定隐藏导入跳过自动扫描
执行打包命令时添加对应参数,示例:pyinstaller --hidden-import sqlalchemy --hidden-import sqlalchemy.dialects.mssql.pyodbc --hidden-import pandas.io.sql 你的主脚本名.py请将命令中的方言路径替换为你实际使用的对应数据库方言。
内容的提问来源于stack exchange,提问作者Alii
相关产品推荐
相关产品推荐

