安装方式:
git clone https://github.com/strawlab/python-pcl.git
pip install --upgrade pip
pip install cython # 有的是指定版本 cython==0.25.2
pip install numpy
cd python-pcl
sudo python setup.py build_ext -i
sudo python setup.py install
运行到 python setup.py build_ext -i 这行代码会报下面的错误,
报错及中间曲折解决过程:
报错如下:大体就是下面这个样子
pcl/boost_shared_ptr_assign.h:1:29: fatal error: pcl/point_cloud.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
报错详细内容和网上解决方案看着这个链接,看了七八个都是一样的解决办法。
Build errors on Ubuntu 16.04 using PCL-1.8.0 stable version · Issue #97 · strawlab/python-pclgithub.com这是英文的,你懒得看不看也行,一言以蔽之,解决方案就是:
cd到 /usr/local/lib/pkgconfig/ 这个文件夹,然后修改pcl_features-1.8.pc文件,把第10行的pcl_2d-1.8去掉。如果没权限操作,就 sudo chmod 777 一下
然而并没什么卵用,按照修改后还是报同样的错误,我找了一遍也没再找到别的pcl_features-1.8.pc这个文件,也不知道哪个函数用了pcl_2d-1.8,然后僵持了一天时间。
终极解决方案:
后面无意之中想到找一下 pcl_2d-1.8.pc 这个文件,然后在 python-pcl/travisCI中找到了,而且还有个文件 temporary solution.txt,瞬间看到曙光,里面内容是这样的
brew install pcl
Eversion 1.8.1 only
cp travis/pcl-2d-1.8.pc /usr/local/lib/pkgconfig
所以正好换个思路,既然找不到,那就把 pcl_2d-1.8.pc 复制到 /usr/local/lib/pkgconfig/ 就是了,于是解决办法就是下面这行命令
cd python-pcl/travisCI # 根据自己情况更改,进入到含 pcl_2d-1.8,pc的文件夹中
sudo cp pcl_2d-1.8.pc /usr/local/lib/pkgconfig/
然后继续前面的安装即可
附1:
如果前面你用 python setup.py build_ext -i 这行代码安装,那么可能会收到下面这个报错,如果有直接前面加 sudo 就行
pcl/_pcl_180.cpp:4:20: fatal error: Python.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
附2:
这行代码 python setup.py install ,也有使用 python setup.py develop 的。如果有,可能会收到setup.py中关于 from distutils.core import setup 错误的代码
解决方法就是把python-pcl中setup.py中 from distutils.core import setup 代码替换为:
try:
from setuptools import setup
except ImportError:
from distutils.core import setup