根据现有的libjpeg依赖修复ImportError
作者:matrix 被围观: 14 次 发布时间:2024-06-25 分类:Linux Python | 无评论 »
Python的Pillow库(PIL)处理图像时,可能会遇到库依赖问题,例如缺少libjpeg.so.9文件
代码语言:javascript复制from PIL import Image
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/work/.local/lib/python3.7/site-packages/PIL/Image.py", line 103, in <module>
from . import _imaging as core
ImportError: libjpeg.so.9: cannot open shared object file: No such file or directory
正常来说是安装libjpeg库来解决 apt-get install libjpeg-dev
/ yum install libjpeg-devel
。但是我这台 CentOS机器之前有这个依赖,还有就是网络问题很麻烦
查找现有的libjpeg库文件
代码语言:javascript复制sudo find / -name "libjpeg.so*" 2> /dev/null
比如找到 /home/work/.jjjjbbbo/lib/libjpeg.so.9
方法 1.更新动态链接配置
软链接到系统库目录,并更新动态链接器配置
代码语言:javascript复制sudo ln -s /home/work/.jjjjbbbo/lib/libjpeg.so.9 /usr/lib/libjpeg.so.9
sudo ldconfig
说明: ln -s 用于将找到的 lib 文件软链接到系统目录 ldconfig命令是更新动态链接器运行时绑定
方法 2.配置临时环境变量
不想修改系统配置,可以通过临时环境变量来解决
代码语言:javascript复制export LD_LIBRARY_PATH=/home/work/.jjjjbbbo/lib:$LD_LIBRARY_PATH
python3 -c 'from PIL import Image' # 执行测试,没有报错
配置LD_LIBRARY_PATH环境变量后,运行无报错,确认问题解决
验证库是否正确链接
代码语言:javascript复制ldd $(which python3)
ldd命令可以查看Python解释器关联的依赖库路径。
还可以通过设置LD_DEBUG=libs
来输出动态链接库加载信息:
LD_DEBUG=libs python3 -c 'from PIL import Image'