You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyInstaller打包exe时SQLAlchemy钩子报错,升级无效怎么办?

解决PyInstaller打包时SQLAlchemy钩子的eval错误

以下是几个可行的解决方法,按优先级尝试:

  • 修改PyInstaller的SQLAlchemy钩子文件
    找到报错的hook-sqlalchemy.py文件(路径如C:\Users\semnome\AppData\Local\Programs\Python\Python310\lib\site-packages\PyInstaller\hooks\hook-sqlalchemy.py),打开后替换掉第31行附近的dialects = eval(dialects.strip())代码:

    from sqlalchemy.dialects import registry
    dialects = list(registry.loaded().keys())
    

    或者如果你明确知道项目用到的方言,直接写死列表,比如dialects = ['sqlite', 'mysql+pymysql'],避免动态解析出错。

  • 显式导入项目用到的SQLAlchemy方言
    在你的主脚本开头,手动导入实际使用的方言模块,比如用MySQL就加:

    import sqlalchemy.dialects.mysql
    

    这样PyInstaller会直接打包该模块,跳过钩子的动态解析步骤。

  • 降级PyInstaller到兼容版本
    新版本PyInstaller可能和当前SQLAlchemy版本不匹配,试试降级到稳定版本,比如:

    pip install pyinstaller==5.13.2
    
  • 排除不需要的SQLAlchemy方言模块
    打包时用--exclude-module参数去掉不用的方言,减少钩子的处理负担,比如不用Oracle就加:

    pyinstaller --exclude-module sqlalchemy.dialects.oracle your_script.py
    

内容的提问来源于stack exchange,提问作者diegooli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:45:58