编译安装python(鲁班猫cat1,rk3566)

0 阅读3分钟

编译安装python(鲁班猫cat1,rk3566)

一、确认系统架构和版本(确保适配)

# 查看架构(输出应为aarch64,即ARM64)
uname -m
# 查看系统版本
cat /etc/os-release

二、安装编译 Python3.10 的依赖

# 更新源(确保依赖包能找到)
sudo apt update -y

# 安装编译核心依赖
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev \
libnss3-dev libssl-dev libreadline-dev libffi-dev wget libbz2-dev \
libsqlite3-dev tk-dev liblzma-dev libgmp-dev libmpfr-dev libmpc-dev \
libc6-dev gcc-aarch64-linux-gnu

# 安装依赖库(ARM64编译必需)
sudo apt install -y libpython2-dev python3-distutils

三、下载 Python3.10 源码

# 下载源码包(国内镜像,速度更快)
wget https://mirrors.huaweicloud.com/python/3.10.14/Python-3.10.14.tgz

# 解压源码包
tar -xf Python-3.10.14.tgz
cd Python-3.10.14

四、编译并安装 Python3.10

# 配置编译参数(核心:--prefix指定安装路径,--enable-optimizations优化性能)
./configure --prefix=/usr/local/python3.10 \
            --enable-optimizations \
            --with-ssl \
            --enable-shared \
            --build=aarch64-linux-gnu

# 编译(-j后接CPU核心数,鲁班猫通常是4核,写4;如果是2核写2,加快编译)
make -j4

# 安装(不会覆盖系统Python)
sudo make altinstall

五、验证 Python3.10 安装结果

# 查看Python3.10版本(指定安装路径)
/usr/local/python3.10/bin/python3.10 --version
# 正常输出:Python 3.10.14

# 查看pip3.10版本
/usr/local/python3.10/bin/pip3.10 --version

六、配置环境

# 临时生效(当前终端)
export PATH=/usr/local/python3.10/bin:$PATH

# 永久生效(所有终端,推荐)
echo 'export PATH=/usr/local/python3.10/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 验证:直接输入python3.10即可调用
python3.10 --version
pip3.10 --version

七、问题

  • 执行/usr/local/python3.10/bin/python3.10 --version命令显示 /usr/local/python3.10/bin/python3.10: error while loading shared libraries: libpython3.10.so.1.0: cannot open shared object file: No such file or directory
1、确认文件是否存在
# 精准搜索Python安装目录下的共享库文件
find /usr/local/python3.10 -name "libpython3.10.so*" 2>/dev/null

# 示例正常输出(有这个文件才说明编译成功生成了共享库):
# /usr/local/python3.10/lib/libpython3.10.so
# /usr/local/python3.10/lib/libpython3.10.so.1.0
# /usr/local/python3.10/lib/libpython3.10.so.3.10
  1. 文件存在
# 1. 先临时指定库路径,验证是否能运行(快速定位问题)
export LD_LIBRARY_PATH=/usr/local/python3.10/lib:$LD_LIBRARY_PATH
# 测试Python是否能运行
/usr/local/python3.10/bin/python3.10 --version

# 2. 如果临时指定后能运行,修复永久配置(重新执行,确保生效)
# 先删除可能写错的配置文件
sudo rm -f /etc/ld.so.conf.d/python3.10.conf
# 重新写入正确路径
sudo sh -c 'echo "/usr/local/python3.10/lib" > /etc/ld.so.conf.d/python3.10.conf'
# 强制更新共享库缓存(加-v看详细输出,确认路径被扫描)
sudo ldconfig -v | grep python3.10

# 3. 验证配置是否生效(能查到库文件说明配置成功)
ldconfig -p | grep libpython3.10

# 4. 重启终端(或重新登录),再次测试
/usr/local/python3.10/bin/python3.10 --version
  1. 文件不存在
# 1. 回到Python源码目录(如果已退出,重新进入)
cd Python-3.10.14

# 2. 清理上次编译的残留文件(关键,避免旧配置干扰)
make clean
sudo make distclean

# 3. 重新配置(简化参数,ARM64先去掉优化,确保共享库生成)
./configure --prefix=/usr/local/python3.10 \
            --with-ssl \
            --enable-shared \
            --build=aarch64-linux-gnu \
            CFLAGS=-fPIC  # ARM64强制生成位置无关代码,解决共享库生成问题

# 4. 单核心编译(ARM板卡避免内存不足,慢但稳定)
make -j1

# 5. 重新安装
sudo make altinstall

# 6. 再次检查文件是否生成
find /usr/local/python3.10 -name "libpython3.10.so*" 2>/dev/null