Eclipse PyDev调试器无法加载共享库:ImportError: libffi.so.7/libssl.so.1.1
问题说明
调试PyDev项目时触发ImportError,提示找不到libffi.so.7,但该库实际安装在/usr/lib/x86_64-linux-gnu/libffi.so.7。错误日志如下:
"/home/user1/.var/app/org.eclipse.Java/eclipse/plugins/org.python.pydev.core_10.2.1.202307021217/pysrc/_pydevd_bundle/pydevd_utils.py", line 9, in
import ctypes
File "/home/user1/.pyenv/versions/3.11.5/lib/python3.11/ctypes/init.py", line 8, in
from _ctypes import Union, Structure, Array
ImportError: libffi.so.7: cannot open shared object file: No such file or directory
已尝试在调试配置中设置LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu,但问题未解决。
解决步骤
1. 解除Flatpak沙箱限制(针对Flatpak版Eclipse)
从路径/home/user1/.var/app/org.eclipse.Java/可判断你使用的是Flatpak打包的Eclipse,沙箱默认隔离系统全局资源。执行以下命令赋予Eclipse访问系统库目录的权限:
flatpak override --filesystem=/usr/lib/x86_64-linux-gnu org.eclipse.Java
重启Eclipse后重新调试。
2. 在PyDev解释器配置中添加环境变量
如果沙箱权限调整无效,直接为Python解释器配置库路径:
- 打开Eclipse,依次进入
Window→Preferences→PyDev→Interpreters→Python Interpreter - 选中你的pyenv 3.11.5解释器,切换到
Environment标签页 - 添加环境变量:
- 名称:
LD_LIBRARY_PATH - 值:
/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
- 名称:
- 点击
Apply保存设置,重启调试会话。
3. 创建软链接到Python库目录
若以上方法均失效,将libffi.so.7软链接到pyenv解释器的lib目录:
ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7 /home/user1/.pyenv/versions/3.11.5/lib/
确认软链接创建成功后,重新启动调试。
内容的提问来源于stack exchange,提问作者omars

