Android编译错误:ImportError: No module named Crypto.Signature

一、背景

今天编译Android9.0遇到一个疑难问题,花了较长的时间解决,究其原因,是编译器更换了Ubuntu20.04后因系统环境改变出现的问题。出现的错误通常如下面的情况:

二、踩坑过程

这是由于缺少所需的Python模块引起的错误。在这种情况下,遇到了缺少名为Crypto的模块的问题,特别是其中的Signature子模块。既然知道了原因,那么就可以着手解决。然而事情没有想得那么简单。最初的方法如下:

sudo apt install python-pip
sudo pip install pycryptodome

分别安装Python的pip包管理工具和名为pycryptodome的python库

pip show pycryptodome

查看pycryptodome的路径

cd home/pang/.local/lib/python2.7/site-packages
mv crypto Crypto

进去pycryptodome安装模块的路径,如果是crypto,将crypto改为Crypto。。。

按照网上的说法,pycrypto、pycrytodome和crypto是一个东西,crypto在python上面的名字是pycrypto,它是一个第三方库,但是已经停止更新三年了,说不建议安装这个库。那么pycryptodome就来了,它是pycrypto的延伸版本,用法和pycrypto是一模一样的。所以解决方法是直接安装pycryptodome,就是使用导入模块时需要将一个crypto修改大小写为Crypto 。原以为到这里就结束了,但结果是方法无效。

另一种方法是采用版本一致的pip下载相关库,先查看版本:

python –version
pip –version

例如版本不同,想要切回如Python2.7的版本,则:

sudo update-alternatives --config python

若里面为空,手动配置python的优先级,后面跟的数字越大优先级越大,之后再进行切换:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2

之后可以使用命令查看列表:

sudo update-alternatives --list python

效果通常如下:

猜你喜欢

转载自blog.csdn.net/lingzhou0909/article/details/142497901