0%

申威架构(sw_64)的Kylin V10系统上安装pandas

最近在做一些国产化适配的工作,让自己的系统能跑在申威架构的CPU上。这几年国产CPU如雨后春笋一般涌现出来,感慨一下,放我刚工作的那几年真是想都不敢想。

申威架构的CPU与ARM架构的CPU不同,更加小众,国内也就UOS和Kylin对其有支持。客户提供的操作系统是Kylin V10的SW_64版本,本文就记录下在这个架构CPU+Kylin V10环境下装Pandas遇到的问题。

创建venv

Kylin V10自带的python3版本是3.7.4,先创建个venv:

1
2
python3 -m venv --copies knktc-env
source knktc-env/bin/active

安装numpy

下意识地直接用pip来安装numpy:

1
pip install numpy

一顿输出后,报错了:

error: #error Unknown CPU, please report this to numpy maintainers with information about your platform (OS, CPU and compiler)

果然有够小众的,识别不出来这个CPU,所以编译无法进行。

网上查了半天,在UOS的论坛上发现有人讨论过,说无法用pip来编译,只能下载UOS预编译好的包。然后在Kylin这个系统上也搜索了下,果然有:

1
2
3
4
5
6
yum search numpy

输出:
Last metadata expiration check: 5 days, 16:43:36 ago on Fri 05 May 2023 04:06:16 PM CST.
============================================================== Name Matched: numpy ===============================================================
python3-numpy.sw_64 : A fast multidimensional array facility for Python

于是先装下这个系统厂商提供的包:

1
yum install python3-numpy

装好后需要手动拷贝下,把装到系统目录中的numpy给拷到venv中:

1
cp -r /usr/lib/python3.7/site-packages/numpy* knktc-env/lib/python3.7/site-packages

尝试看下版本:

1
2
3
>>> import numpy
>>> numpy.__version__
'1.16.5'

好了,先把numpy的问题给解决了。

安装Pandas

要安装Pandas的话,这一步只好使用源码来编译了。

先把依赖给装下:

1
2
3
4
5
pip install setuptools --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install wheel --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install Cython --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pytz==2018.7 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install python-dateutil -i https://pypi.tuna.tsinghua.edu.cn/simple

然后去以下地址下载源码包:

https://github.com/pandas-dev/pandas/releases

我们还在用1.1.5版本,就用这个地址来下载:

https://github.com/pandas-dev/pandas/releases/download/v1.1.5/pandas-1.1.5.tar.gz

下载后解压,随后进入到目录用最传统的方式安装即可:

1
2
cd pandas-1.1.5/
python setup.py install

注意,这个过程有点漫长,建议开个screen来进行编译安装。

虽然过程漫长,但居然没啥报错地就完成了。

最后再试试panda的版本:

1
2
3
>>> import pandas
>>> pandas.__version__
'1.1.5'

嗯,应该可以了。

如果我的文字帮到了您,那么可不可以请我喝罐可乐?