公司需要适配龙芯,在龙芯机器上创建虚拟环境后,通过requirment.txt安装python包,但是由于packages里的包大多是centos编译出的.whl包,在龙芯上识别不到,报错Could not find a version that satisfies the requirement xxxx
,明明packages里有这个包,但是平台识别不出来,只能用源码编译安装。
报错信息:
解决方法:
去官网下载对应的源码包,或者直接在目标平台使用python pip download -d 下载路径 包名 版本号
下载,如果直接下载到.whl包是最完美的,省去编译步骤。
下载完源码的tar包,放入packages中,执行安装python pip --disable-pip=version-check --no-cache-dir --no-index -f /lwq/packages -r /lwq/packages/requirements.txt
, 结果编译时又报错。
报错信息:
问题分析:
在编译源码包时,缺少了一个依赖,查询官网发现cryptography在编译时需要一个rust编译器,即报错信息中显示的setuptools-rust。
然后去pypi下载轮子,放入packages。
至此,依赖成功通过。
战略下划线
依赖通过后,真正的坑还在等着我。
在编译阶段,报错,缺少一个Rust编译器,查询Changelog发现cryptography在3.4版本加入了Rust,所以需要一个 Rust编译器,随即想着去安装一个Rust编译器。
来到Rust官网,找到安装方法
普通的发行版Linux直接使用下面这行命令就可以正常安装,一路默认安装即可。
- 加入中科大镜像源,否则下载速度太慢。
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
- 使用命令按照
curl https://sh.rustup.rs -sSf | sh
- 安装完之后执行重新加载环境变量,使rustup命令生效
source $HOME/.cargo/env
- 打印版本,成功打印出版本号
rustc --version
结果,龙芯在安装时报错找不到cpu类型,于是我直接去官网上找到龙芯的rustup-init
文件,按照官网的提示下载下来后直接运行,结果呢,getRandom函数报了个panic。