Pyinstaller打包Chrome密码导出脚本报No module named 'Crypto'如何解决?
出现这个问题的核心原因是Pyinstaller打包时无法自动识别pycryptodome(Crypto模块的实际安装包)的路径,或存在环境不匹配、包命名冲突的问题,按以下步骤排查解决即可:
第一步:清理并重装正确的依赖包
先卸载所有可能冲突的加密包,再安装官方维护的pycryptodome:pip uninstall crypto pycrypto pycryptodome -y pip install pycryptodome注意:操作前请确认你当前终端的Python环境和你编写代码用的环境是同一个,如果你用了PyCharm的虚拟环境,请在PyCharm内置终端执行以上命令。
第二步:检查包文件夹命名是否正确
打开Python安装目录下的site-packages文件夹,确认存在大写开头的Crypto文件夹,如果只有小写的crypto文件夹,手动将其重命名为Crypto即可,因为代码中导入的是大写开头的Crypto模块,大小写敏感。第三步:打包时显式指定隐藏导入
打包时添加--hidden-import参数手动告诉Pyinstaller要导入Crypto模块,完整打包命令参考:pyinstaller -F --hidden-import=Crypto main.py如果还是报错,可以额外指定pycryptodome的安装路径,先通过
pip show pycryptodome查看Location字段对应的路径,比如路径是C:\Users\XXX\AppData\Local\Programs\Python\Python310\Lib\site-packages,打包命令改为:pyinstaller -F --hidden-import=Crypto -p "你的site-packages路径" main.py第四步:清理缓存重新打包
每次打包前请删除之前生成的build、dist文件夹和.spec后缀的文件,避免旧缓存影响打包结果。
按照以上步骤操作后重新打包生成的exe即可正常运行。
内容的提问来源于stack exchange,提问作者Ph6bia

