首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何加载两个不同的Python模块,如果全局设置它们的共享库需求冲突

如何加载两个不同的Python模块,如果全局设置它们的共享库需求冲突
EN

Stack Overflow用户
提问于 2020-09-22 20:47:09
回答 2查看 541关注 0票数 3

我正在进行一个项目,在这个项目中,我需要同时使用两个python模块:

在遵循了对从源安装PyMesh的说明之后,我成功地使用了Python3.8解释器(在Ubuntu 18上)完成了import pymesh

然后我下载并安装了PyRep。这在一开始不起作用,并给出了错误:

代码语言:javascript
运行
复制
    ~/.local/lib/python3.8/site-packages/pyrep/backend/sim.py in <module>
      1 from .simConst import *
----> 2 from ._sim_cffi import ffi, lib
      3 import numpy as np
      4 import collections
      5 

ImportError: libcoppeliaSim.so.1: cannot open shared object file: No such file or directory

PyRep的安装说明说,这是因为我需要确保PyRep能够访问本地CoppeliaSim安装中的共享库,并且应该在.bashrc中添加以下行:

代码语言:javascript
运行
复制
export COPPELIASIM_ROOT=EDIT/ME/PATH/TO/COPPELIASIM/INSTALL/DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$COPPELIASIM_ROOT
export QT_QPA_PLATFORM_PLUGIN_PATH=$COPPELIASIM_ROOT

成功!我可以import pyrep没有问题。但是,如果我现在再次导入pymesh,则会得到一个错误:

代码语言:javascript
运行
复制
~/.local/lib/python3.8/site-packages/pymesh2-0.3-py3.8-linux-x86_64.egg/pymesh/Mesh.py in <module>
      3 import numpy as np
      4 
----> 5 import PyMesh
      6 
      7 class Mesh(object):

ImportError: /home/craig/Programs/CoppeliaSim/libtbb.so: file too short

通过按建议在bash登录时全局设置$LD_LIBRARY_PATH,使pymesh在Coppelia-Sim根文件夹中搜索冲突的共享库!(为了寻找解决方案,我找到了在.bashrc中,正是出于这个原因)

我该怎么解决这个问题?PyRep要求我向LD_LIBRARY_PATH添加一个目录,但是如果我这样做,PyMesh会中断(尽管我可以让每个目录单独工作)。

尝试替代方案

通过研究这个问题,我了解到可以使用patchelf命令更改特定共享库查找依赖项的位置。因此,我尝试手动地调整违规的PyRep _sim_cffi库的位置:

代码语言:javascript
运行
复制
patchelf --set-rpath "/home/craig/Programs/CoppeliaSim" ~/.local/lib/python3.8/site-packages/pyrep/backend/_sim_cffi.cpython-38-x86_64-linux-gnu.so

但是,这只会导致传递的依赖错误降低一级:

代码语言:javascript
运行
复制
~/.local/lib/python3.8/site-packages/pyrep/backend/sim.py in <module>
      1 from .simConst import *
----> 2 from ._sim_cffi import ffi, lib
      3 import numpy as np
      4 import collections
      5 

ImportError: libQt5SerialPort.so.5: cannot open shared object file: No such file or directory
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64017475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档