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

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

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

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

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

bash 复制代码
# 更新源(确保依赖包能找到)
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 源码

bash 复制代码
# 下载源码包(国内镜像,速度更快)
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

bash 复制代码
# 配置编译参数(核心:--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 安装结果

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

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

六、配置环境

bash 复制代码
# 临时生效(当前终端)
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、确认文件是否存在
bash 复制代码
# 精准搜索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. 文件存在
bash 复制代码
# 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. 文件不存在
bash 复制代码
# 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
相关推荐
带娃的IT创业者3 分钟前
Python 异步编程完全指南(二):深入 asyncio 核心概念
开发语言·python·协程·事件循环·asyncio·异步编程
小付爱coding11 分钟前
openclaw源码架构深度解析【总体概况】
python·架构·openclaw
又是忙碌的一天14 分钟前
Java 面向对象三大特性:封装、继承、多态深度解析
java·前端·python
qq_3806513327 分钟前
xu#True
python
DeepModel30 分钟前
【概率分布】均匀分布的原理、推导与Python实现
python·算法·概率论
wmfglpz8833 分钟前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
zzb158035 分钟前
Agent学习-Reflection框架
java·人工智能·python·学习·ai
2301_7644413337 分钟前
使用python实现脉冲神经网络,用于分类任务
python·神经网络·分类
qyzm1 小时前
AtCoder Beginner Contest 449
数据结构·python·算法·贪心算法
no_work1 小时前
python-深度学习快速入门实战-数据集和源码
开发语言·人工智能·python·深度学习·神经网络·cnn