树莓派运行第三方Python脚本时缺失libpython3.8.so.1.0的求助
树莓派运行第三方Python脚本时缺失libpython3.8.so.1.0的求助
问题描述
我在树莓派4(最新64位Bookworm系统)上运行一个别人开发的Python脚本,脚本自带了若干.so格式的依赖库,但每次执行都会弹出错误:
ImportError: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
脚本附带的文档提到遇到这个问题需要安装libpython3.8包,但我尝试了各种方法都没搞定:用系统预装的Python3.11运行报错,特意安装了文档要求的Python3.8还是报同样的错;甚至换成32位Bullseye系统,也找不到类似libpython3.8-*的相关文件。有没有大佬能指点一下怎么解决?
解决方案
针对你的情况,我整理了几个可行的解决办法,分系统场景来说:
一、64位Bookworm系统(你当前用的系统)
Bookworm默认软件源里没有Python3.8的相关包(系统预装的是3.11),所以得用特殊方式安装:
临时添加Bullseye源安装
这是最快捷的方式,步骤如下:- 编辑系统源列表:
sudo nano /etc/apt/sources.list - 在文件末尾添加Bullseye的64位源:
deb http://deb.debian.org/debian bullseye main deb http://deb.debian.org/debian bullseye-updates main - 更新源并安装libpython3.8:
sudo apt update sudo apt install libpython3.8 - 安装完成后一定要把刚才加的Bullseye源注释掉(避免后续系统更新出问题):再次打开
sources.list,在添加的两行前加#,然后执行sudo apt update。
- 编辑系统源列表:
手动编译Python3.8生成库文件
如果添加源的方式有冲突,可以手动编译:- 先装编译依赖:
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget - 下载Python3.8.18的源码(稳定版本):
wget https://www.python.org/ftp/python/3.8.18/Python-3.8.18.tgz - 解压并进入源码目录:
tar -xf Python-3.8.18.tgz cd Python-3.8.18 - 配置编译选项(重点是
--enable-shared生成共享库):./configure --enable-shared --prefix=/usr/local/python3.8 - 编译安装(
-j4用4核加速,树莓派4刚好4核):make -j4 sudo make install - 最后配置系统库路径,让系统能找到这个库:
echo "/usr/local/python3.8/lib" | sudo tee /etc/ld.so.conf.d/python3.8.conf sudo ldconfig
- 先装编译依赖:
二、32位Bullseye系统
Bullseye的源里默认有Python3.8的包,直接执行以下命令就能安装:
sudo apt update sudo apt install libpython3.8
如果还是找不到库文件,可以用命令搜索:
sudo find / -name "libpython3.8.so.1.0"
找到路径后(比如/usr/lib/arm-linux-gnueabihf/libpython3.8.so.1.0),把所在目录添加到系统库路径:
echo "/usr/lib/arm-linux-gnueabihf" | sudo tee /etc/ld.so.conf.d/python3.8.conf sudo ldconfig
额外提示
- 运行脚本时尽量用你安装的Python3.8来执行,比如:
/usr/local/python3.8/bin/python3.8 your_script.py - 如果脚本自带的
.so库是32位编译的,那64位系统可能无法兼容,这时候换回32位Bullseye系统会更省心。
备注:内容来源于stack exchange,提问作者עילי לשם
相关产品推荐
相关产品推荐

