我正在从事一个需要同时使用两个python模块的项目:
按照install PyMesh from source的说明操作之后,我成功地使用了我的Python 3.8解释器(在Ubuntu18上)
然后我下载并安装了PyRep。这最初不起作用,并出现错误:
~/.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中添加以下行:
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
成功!我可以{
~/.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在coppeliasim根文件夹中搜索冲突的共享库!(寻找解决方案,我发现an article which condems changing ^{
我如何解决这个难题?PyRep要求我向LD_LIBRARY_路径添加一个目录,但如果我这样做,PyMesh就会中断(尽管我可以让每个目录单独工作)
通过研究这个问题,我了解到可以使用patchelf
命令更改特定共享库查找依赖项的位置。因此,我尝试手动调整有问题的PyRep_sim_cffi
库的位置:
patchelf --set-rpath "/home/craig/Programs/CoppeliaSim" ~/.local/lib/python3.8/site-packages/pyrep/backend/_sim_cffi.cpython-38-x86_64-linux-gnu.so
但是,这只会导致向下一级出现可传递依赖项错误:
~/.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
我在以前的帖子上读了一些关于
pipx
的文章,这可能是一个潜在的解决方案我给你留下一些信息
来源:stackoverflow's @jpyams
希望这有用;)
我能想到的第一件事是创建一个虚拟环境,并使用它来安装软件包。但问题仍然存在,因为问题在于两个包之间的共享路径。有些事情你可以试试:
创建一个shell脚本来设置LD_LIBRARY_路径,为PyRep执行pip安装。然后运行脚本
MyScript.sh
运行脚本
您还可以为运行的命令设置环境变量,如下所示
MyScript.sh
运行脚本
上述解决方案将确保仅在尝试安装PyRep时设置相应的LD_LIBRARY_路径,并且PyMesh不会出现后续路径问题
相关问题 更多 >
编程相关推荐