Python2虚拟环境无法安装gtop模块 能否复制系统gtop.so解决
问题解答
结论
可以直接复制该.so文件到虚拟环境中使用。Python的C扩展动态库本身和运行环境无关,只要编译目标的Python版本、系统架构匹配,就可以直接复制到其他同版本Python环境下加载使用,你当前的场景完全满足适配要求。
生效前提
只要同时满足以下两个条件,就能正常导入使用:
- 你的pyenv虚拟环境的Python 2.7.18和系统Python 2.7.18的编译架构、核心编译参数完全一致(同Ubuntu系统下的同版本Python默认都会满足该要求)
- gtop.so的系统动态链接依赖齐全,你已经在系统Python中正常导入过该模块,说明依赖本身已经满足,不需要额外安装其他系统包
操作步骤
- 激活你的pyenv Python 2.7.18虚拟环境,执行以下命令查看虚拟环境的第三方包存放路径:
import site print(site.getsitepackages())
- 把系统路径下的
/usr/lib/python2.7/dist-packages/gtk-2.0/gtop.so文件,复制到上一步输出的路径中的gtk-2.0子目录下,如果该子目录不存在可以手动创建 - 重启虚拟环境的Python进程,执行
import gtop验证导入结果即可
异常处理
如果复制后导入时报undefined symbol相关错误,说明两个Python环境的关联依赖有细微差异,把系统路径下/usr/lib/python2.7/dist-packages/gtk-2.0目录内的所有文件都完整复制到虚拟环境对应的gtk-2.0目录下即可解决。
内容的提问来源于stack exchange,提问作者Mario
相关产品推荐
相关产品推荐

