pip安装Git源Python包报错找不到.so共享库文件如何解决
解决方案
按以下顺序排查修复即可:
- 先确认LD_LIBRARY_PATH的生效范围:
export配置的环境变量仅对当前执行命令的终端会话生效,如果你换了终端窗口、在IDE里跑代码、用sudo/系统服务启动脚本,都读不到这个变量。先在同一个终端执行echo $LD_LIBRARY_PATH确认输出的so路径完全正确,再在该终端内启动Python测试导入。要永久生效的话,把export语句写到~/.bashrc(bash环境)、~/.zshrc(zsh环境)中,执行source对应文件刷新;或者直接把so所在目录的绝对路径写入/etc/ld.so.conf.d/custom_libs.conf,执行sudo ldconfig刷新全局动态链接库缓存,这种方式不会受会话、权限过滤影响。 - 校验so文件本身的兼容性:执行
file /你的so绝对路径/lib{that_package}.so查看文件架构,x86_64系统无法加载arm架构编译的so,64位环境也无法兼容32位的共享库,架构不匹配时系统也会抛出“找不到文件”的报错,和文件是否存在无关。 - 检查so的依赖完整性:执行
ldd /你的so绝对路径/lib{that_package}.so查看该共享库依赖的其他底层库,如果输出结果里存在not found标记的项,说明你编译出的so本身缺依赖,需要先安装对应缺失的系统依赖,再重新编译so文件。 - 修正pip安装包的库关联:直接通过git地址执行pip安装时,包会被部署到Python的site-packages目录,默认不会关联你本地手动编译的so文件。你可以在编译完so之后,进入仓库根目录执行
pip install .重新本地安装,包的构建配置会自动把编译产物关联到正确的加载路径;也可以先执行python -c "import 对应包名; print(对应包名.__path__)"拿到包的实际安装目录,把编译好的so文件直接拷贝到该目录下再测试。
内容的提问来源于stack exchange,提问作者Peedaruos
相关产品推荐
相关产品推荐

