编译安装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
相关推荐
肖永威1 小时前
Python多业务并行计算框架插件化演进:从硬编码到动态注册
python·插件化·并行计算·动态注册
yz_aiks1 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
不知名的老吴1 小时前
线程的生命周期之线程“插队“
java·开发语言·python
xsc6996752 小时前
从零搭建大模型与智能体平台 - 完整技术详解
python
无风听海3 小时前
多租户系统中的 OIDC:Discovery 端点与联合登录的深度实践
后端·python·flask
CTA终结者4 小时前
期货量化主力换月程序怎么移仓:天勤 underlying_symbol 与任务切换
python·区块链
马士兵教育4 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
KaMeidebaby5 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
Cloud_Shy6185 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 30 - 32)
开发语言·人工智能·笔记·python·学习方法
天佑木枫5 小时前
15天Python入门系列 · 序
开发语言·python