前言
我们在成功Crypto安装后,经常会遇到问题:使用from Crypto.PublicKey import RSA导入时,提示并没有Crypto库,找不到对应模块:
我的python3为了方便管理和配置环境是安装在资源库(/Library)的/Frameworks路径下的,请找到自己电脑python3对应版本的安装路径。
报错:ModuleNotFoundError: No module named ‘Crypto’
- 为了避免出错,首先卸载已经下好的crypto:
pip3 uninstall crypto
- 安装:
python3 -m pip install Crypto
安装后去去相应环境下的site-packages文件夹下,发现包名是小写的(crypto,crypto-1.4.1.dist-info),由于在python3代码中通常使用如下方式引用该代码库,我们需要将首字母修改为大写。
- 路径例:
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages
- 修改后:
- 然后安装模块:
pip3 install PyCryptodome
安装完成~
如果遇到报错( ImportError: cannot import name ‘DerBitString’ from ‘Crypto.Util.asn1’):
/PublicKey/__init__.py", line 21, in <module>
from Crypto.Util.asn1 import (DerSequence, DerInteger, DerBitString,
ImportError: cannot import name 'DerBitString' from 'Crypto.Util.asn1'
原因
同时安装了PyCrypto和PyCryptodome导致的冲突
解决
先将两个模块卸载,然后再安装一个:
- 卸载PyCrypto
pip3 uninstall PyCrypto
- 卸载PyCryptodome
pip3 uninstall PyCryptodome
- 安装PyCryptodome
pip3 install PyCryptodome
然后就可以正常使用了~