在成功编译drake_cxx_python
之后,我得到了python3 -c 'import pydrake.all; print(pydrake.__file__)'
的输出
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/dmitriy/git/drake-build/install/lib/python3.8/site-packages/pydrake/all.py", line 31, in <module>
from .autodiffutils import *
ImportError: libmosek64.so.9.3: cannot open shared object file: No such file or directory
我使用以下命令序列:
rm -rfv drake-build
git clone https://github.com/RobotLocomotion/drake.git
mkdir drake-build
cd drake-build
cmake -DWITH_GUROBI=ON -DWITH_MOSEK=ON ../drake
../drake/setup/ubuntu/source_distribution/install_prereqs_user_environment.sh
make -j4
接下来,我通过将PATH
添加到/.bashrc
文件中来指定它:
#drake
cd ~/git/drake-build/
export PYTHONPATH=${PWD}/install/lib/python3.8/site-packages:${PYTHONPATH}
cd
sudo python3 -c 'import pydrake.all; print(pydrake.__file__)'
输出
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'pydrake'
我安装了Mosek,使用它:使用说明
ldd install/lib/python3.8/site-packages/pydrake/solvers/__init__.cpython-38-x86_64-linux-gnu.so | grep -i mosek
输出
libmosek64.so.9.3 => not found
libmosek64.so.9.2 => not found
readelf -d install/lib/python3.8/site-packages/pydrake/solvers/__init__.cpython-38-x86_64-linux-gnu.so | grep -i path
输出
0x000000000000001d (RUNPATH) Library runpath: [/usr/lib/x86_64-linux-gnu/lapack/:/usr/lib/x86_64-linux-gnu/blas/]
同时,还有一个文件libmosek64.so.9.3*
~/git/drake-build/install/lib$ l -a
./
../
cmake/
libcilkrts.so.5*
libddApp.so*
libdrake_ibex.so*
libdrake_lcm.so*
libdrake_marker.so*
libdrake.so*
libgurobi95.so@
libgurobi.so.9.5.1*
libmosek64.so.9.3*
为什么它看不见?
我尝试使用pip安装drake,并得到了相同的错误:python3 -c 'import pydrake.all; print(pydrake.__file__)'
的输出
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/dmitriy/git/drake-build/install/lib/python3.8/site-packages/pydrake/all.py", line 31, in <module>
from .autodiffutils import *
ImportError: libmosek64.so.9.3: cannot open shared object file: No such file or directory
发布于 2022-08-04 21:28:59
我不知道为什么你看到两个版本的MOSEK要求。您是否一次又一次地将Drake安装在同一个install
文件夹中?这不是CMake的工作方式。使用CMake时,您需要在重新运行任何安装之前将rm -rf
安装文件夹。否则,它永远不会清理任何旧文件,它们可能会破坏安装。特别是,这可能是https://github.com/RobotLocomotion/drake/issues/14224。
https://stackoverflow.com/questions/73219153
复制相似问题