若在银河麒麟系统中导入numpy或scipy报ModuleNotFoundError,需根据环境选择对应安装方式:一、用pip3配镜像源安装;二、用conda自动处理BLAS依赖;三、源码编译适配优化;四、适配KYSEC安全机制并添加白名单。

如果您已在银河麒麟系统上完成Python环境配置,但尝试导入numpy或scipy时提示ModuleNotFoundError,则可能是由于科学计算库未安装、依赖缺失或pip源不可达。以下是针对不同Python环境的多种安装方法:
一、使用系统默认pip3安装(适用于APT安装的Python 3)
该方式利用系统预装的pip3工具,从PyPI官方源或国内镜像源快速安装二进制轮子(wheel),适合对编译环境要求不高的场景,且无需额外依赖库。
1、打开终端,执行sudo apt update更新软件包索引。
2、确保基础开发组件已就位:sudo apt install python3-pip python3-dev build-essential libatlas-base-dev liblapack-dev gfortran。
3、配置清华镜像源加速下载:python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/。
4、依次安装:python3 -m pip install numpy scipy。
5、验证安装:python3 -c "import numpy as np; import scipy; print(np.__version__, scipy.__version__)"。
二、使用conda环境安装(适用于Anaconda/Miniconda用户)
conda可自动解析并安装NumPy与SciPy所需的底层BLAS/LAPACK实现(如OpenBLAS或Intel MKL),避免手动编译复杂依赖,特别适合ARM架构(aarch64)或x86_64平台下的高性能数值计算需求。
1、确认conda已激活:conda --version;若未安装,请先下载对应架构的Anaconda3安装脚本(如Linux-aarch64.sh或Linux-x86_64.sh)并执行bash命令安装。
2、创建独立环境(推荐):conda create -n scienv python=3.11。
3、激活环境:conda activate scienv。
4、安装科学计算栈:conda install numpy scipy matplotlib ase -c conda-forge。
5、验证:python -c "import numpy; import scipy.linalg; print('OK')"。
三、源码编译安装(适用于需启用特定优化或定制BLAS后端的场景)
当需要绑定OpenBLAS、Intel MKL或ARM SVE指令集优化时,必须从源码构建。此方式可控性强,但耗时较长,且要求系统已安装Fortran编译器及线性代数库头文件。
1、安装编译依赖:sudo apt install build-essential gfortran libopenblas-dev liblapack-dev libatlas-base-dev cython3。
2、升级pip与setuptools:python3 -m pip install --upgrade pip setuptools wheel Cython。
3、下载NumPy源码:wget https://github.com/numpy/numpy/releases/download/v1.26.4/numpy-1.26.4.tar.gz;解压并进入目录。
4、配置编译选项:python3 setup.py build_ext --inplace -j$(nproc)。
5、安装:python3 setup.py install --prefix=/usr/local/python311 --optimize=2。
6、重复步骤3–5安装SciPy:wget https://github.com/scipy/scipy/releases/download/v1.13.1/scipy-1.13.1.tar.gz;注意SciPy需在NumPy已安装的前提下编译。
四、麒麟系统专属适配方案(含KYSEC权限处理)
银河麒麟OS启用KYSEC安全机制后,通过pip或conda安装的二进制扩展模块(如*.so文件)可能被强制拦截执行。需将关键路径加入白名单,否则import时将报错Operation not permitted或Permission denied。
1、检查KYSEC当前模式:getstatus。
2、若返回enabled且模式为Normal,临时切换至Softmode:sudo setstatus Softmode。
3、安装完成后,获取已安装模块路径:python3 -c "import numpy; print(numpy.__file__)"。
4、将输出路径中包含.so的父目录(如/usr/local/lib/python3.11/site-packages/numpy/core)添加至KYSEC白名单:sudo kysecctl --add /usr/local/lib/python3.11/site-packages/numpy/core --type dir。
5、对SciPy同理操作:sudo kysecctl --add /usr/local/lib/python3.11/site-packages/scipy/linalg --type dir。

















