最近在配置3D-CODED,其中依赖于pymesh安装包,走了不少弯路,记录一下。
首先,网上有两个不同版本的pymesh(Reference):
-
Pymesh by Takuro Wada, 如果我们直接使用
pip install pymesh
来进行安装,装上的就是这个版本。 -
Pymesh by Qingnan Zhou,它的安装方式有很多种,
- 下载source源码并编译安装,参考这个链接下的官方安装指南。
- 使用conda进行安装:https://anaconda.org/conda-forge/pymesh2。
- 使用wheel文件进行安装,到这个页面下载官方发布的wheel文件,然后
pip install xxx.whl
即可。
我先是pip
安装了第一个版本,然后出现报错module has no attribute (form_mesh, save_mesh),于是发现3D-CODED需要的是Qingnan Zhou版本的Pymesh。
所以接着就挨个尝试了上面的各种安装方式。
- 编译源码安装,倒是成功编译以及安装到了系统环境下,但是卡在了安装到Anaconda环境这一步,遂放弃。
- conda安装,报错提示cuda version is incompatible,告辞!下一个!
- wheel文件安装,我的conda环境是python3.7,官方只提供了v3.0的python3.7对应wheel,于是我下载的是这个版本(
pymesh2-0.3-cp37-cp37m-linux_x86_64.whl
),安装以及测试python -c "import pymesh; pymesh.test()"
都非常丝滑,可是到运行3D-CODED的时候出现了奇怪的报错:
python inference/correspondences.py --dir_name learning_elementary_structure_trained_models/1patch_deformation
Traceback (most recent call last):
File "inference/correspondences.py", line 9, in <module>
import model
File "./auxiliary/model.py", line 9, in <module>
from my_utils import sampleSphere
File "./auxiliary/my_utils.py", line 7, in <module>
import pymesh
File "/home/yu/anaconda3/envs/pytorch-3D-CODED/lib/python3.7/site-packages/pymesh/__init__.py", line 18, in <module>
from .Mesh import Mesh
File "/home/yu/anaconda3/envs/pytorch-3D-CODED/lib/python3.7/site-packages/pymesh/Mesh.py", line 5, in <module>
import PyMesh
ImportError: /home/yu/anaconda3/envs/pytorch-3D-CODED/lib/python3.7/site-packages/torch/../../../libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /home/yu/anaconda3/envs/pytorch-3D-CODED/lib/python3.7/site-packages/pymesh/lib/PyMesh.cpython-37m-x86_64-linux-gnu.so)
找不到GLIBCXX_3.4.26
。terminal运行strings /usr/lib/libstdc++.so.6 | grep GLIBCXX
果然是没有这个版本。左寻右找,参考这个链接安装升级了gcc和libstdc++,找得到对应版本了可还是出现同样的报错。
最后使用了第三方contributor提供的pymesh-v2.1的python3.7 wheel,成功解决。然鹅还是没搞懂为啥v3.0不行,希望未来能出现有缘人给个解答,或者有空再多搜索搜索看看能不能找到答案。
wheel发现于这个issue discusstion,安装命令:
pip install http://imagine.enpc.fr/~langloip/data/pymesh2-0.2.1-cp37-cp37m-linux_x86_64.whl
网友评论