Python加密程序转EXE后无法运行,导入AES模块报错求助
解决PyInstaller打包Crypto AES加密程序的运行报错问题
嘿,我之前也踩过PyInstaller打包Crypto相关程序的坑!从你的报错回溯来看,问题出在打包后的exe找不到Crypto.Cipher.AES模块——这是因为PyInstaller的静态依赖分析没自动识别到这个模块,导致打包时漏掉了它。给你几个亲测有效的解决办法:
先确认依赖库版本(重要!)
旧的pycrypto库已经停止维护了,而且和PyInstaller的兼容性很差。先卸载旧库,换成维护中的pycryptodome:pip uninstall pycrypto pip install pycryptodome用
--hidden-import手动指定缺失模块
修改你的打包命令,直接告诉PyInstaller要把Crypto.Cipher.AES包含进去:pyinstaller -F --hidden-import Crypto.Cipher.AES en-decryptor-v2.py如果还是不行,可以放宽范围,把整个Crypto相关模块都加进去:
pyinstaller -F --hidden-import Crypto --hidden-import Crypto.Cipher en-decryptor-v2.py通过spec文件手动配置打包选项
如果自动打包还是有问题,生成spec文件来精细化控制:- 生成spec文件:
pyinstaller -F en-decryptor-v2.py --specpath . - 打开生成的
en-decryptor-v2.spec,找到hiddenimports字段,添加需要的模块:hiddenimports=['Crypto.Cipher.AES', 'Crypto.Cipher'], - 用spec文件重新打包:
pyinstaller en-decryptor-v2.spec
- 生成spec文件:
针对Python 2.7的额外优化
从你的报错路径c:\python27看,你用的是Python 2.7,这个版本下可以试试加上--noupx参数,避免UPX压缩破坏Crypto的二进制文件:pyinstaller -F --hidden-import Crypto.Cipher.AES --noupx en-decryptor-v2.py
简单说下原因:PyInstaller靠静态扫描代码找依赖,但Crypto库内部有一些动态导入的逻辑,静态分析抓不到,所以必须手动指定这些隐藏的依赖模块,打包后exe才能正常运行。
内容的提问来源于stack exchange,提问作者S. Backlayn
相关产品推荐
相关产品推荐

