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

Pyinstaller无法加载Crypto.Cipher.__raw_ecb原生模块问题求助

解决PyInstaller无法加载Crypto.Cipher.__raw_ecb的问题

嘿,这个问题我之前踩过坑!PyInstaller打包时遇到Crypto原生模块加载失败的情况,大多是库兼容性或者打包配置的问题,给你几个实测有效的解决办法:

  • 替换维护活跃的加密库
    老版的PyCrypto已经停止维护好多年了,和PyInstaller的兼容性拉胯得很。先把旧库卸载干净:

    pip uninstall crypto pycrypto -y
    

    然后安装它的替代分支PyCryptodome,这个库完全兼容原有API,还修复了大量打包相关的bug:

    pip install pycryptodome
    

    替换后你的代码不需要做任何修改,因为它依然使用Crypto这个包名。

  • 给PyInstaller指定隐藏导入
    有时候PyInstaller的自动依赖检测会漏掉这类原生模块,你可以在打包时直接指定要导入的模块:

    pyinstaller --hidden-import Crypto.Cipher.__raw_ecb 你的脚本文件名.py
    

    如果已经生成了.spec配置文件,也可以手动编辑它,在hiddenimports列表里添加这个模块:

    a = Analysis(
        ['你的脚本文件名.py'],
        pathex=[],
        binaries=[],
        datas=[],
        hiddenimports=['Crypto.Cipher.__raw_ecb'],  # 加上这行
        hookspath=[],
        hooksconfig={},
        runtime_hooks=[],
        excludes=[],
        win_no_prefer_redirects=False,
        win_private_assemblies=False,
        cipher=None,
        noarchive=False
    )
    

    之后用spec文件重新打包:

    pyinstaller 你的脚本文件名.spec
    
  • 确保Python位数和库版本匹配
    从你的错误路径能看到用的是32位Python(python36-32),如果安装的加密库是64位版本,就会出现加载失败。可以卸载后重新安装适配32位的版本:

    pip install pycryptodome --no-binary :all:
    

    这个命令会强制从源码编译,生成适配当前Python位数的库文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:46:35