Ubuntu 16.04安装Pymesh

最近在配置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。

所以接着就挨个尝试了上面的各种安装方式。

  1. 编译源码安装,倒是成功编译以及安装到了系统环境下,但是卡在了安装到Anaconda环境这一步,遂放弃。
  2. conda安装,报错提示cuda version is incompatible,告辞!下一个!
  3. 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 
    import model
  File "./auxiliary/model.py", line 9, in 
    from my_utils import sampleSphere
  File "./auxiliary/my_utils.py", line 7, in 
    import pymesh
  File "/home/yu/anaconda3/envs/pytorch-3D-CODED/lib/python3.7/site-packages/pymesh/__init__.py", line 18, in 
    from .Mesh import Mesh
  File "/home/yu/anaconda3/envs/pytorch-3D-CODED/lib/python3.7/site-packages/pymesh/Mesh.py", line 5, in 
    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

额外阅读: 【Linux】理清gcc、glibc、libstdc++的关系

你可能感兴趣的:(Ubuntu 16.04安装Pymesh)