ubuntu(25):AttributeError: module ‘pcl‘ has no attribute ‘PointCloud‘与ubuntu18.04安装python-pcl

module ‘pcl’ has no attribute 'PointCloud’与ubuntu18.04安装python-pcl

一.报错 AttributeError: module 'pcl' has no attribute 'PointCloud'

终端输出:

    cloud = pcl.PointCloud()
AttributeError: module 'pcl' has no attribute 'PointCloud'

1.1 原因分析

可能原因之一是:因为没有安装python-pcl,印象里面本机没有安装python-pcl

1.2 注意

pip install pcl不能解决问题

1.3 解决方案

见下面

二. 解决方案:ubuntu18.04安装python-pcl

参考链接:Ubuntu18.04安装python-pcl

2.1 配置

ubuntu18.04``python3.7,具体环境为之前使用anaconda配置的yolov5环境yolov5py37:https://blog.csdn.net/BIT_HXZ/article/details/123444769

2.2 安装pcl点云库

Ubuntu18.04默认安装1.8版本的pcl
输入:sudo apt-get install libpcl-dev pcl-tools
终端打印:libpcl-dev 已经是最新版 (1.8.1+dfsg1-2ubuntu2.18.04.1)。即已经安装

2.3 使用源码方式安装VTK7.1版本

一般pcl与VTK(visualization toolkit)的对应版本如下(参考vtk编译问题踩坑-Ubuntu16.04编译切换pcl版本):

(1) pcl-1.7.2 vtk-5.10.1 / vtk-6.2.0
(2) pcl-1.8.1 vtk-7.1.1
(3) pcl-1.9.1 vtk-8.2.0

(1) 先安装opengl

sudo apt-get install libgl1-mesa-dev #需要先安装opengl
sudo apt-get install libxt-dev

终端均输出已经安装

(2) 查看之前是否安装过VTK

查看源码安装目录

查看之前是否使用源码安装过VTK,一般源码安装的VTK在下面的目录:

/usr/local/include/  #包含目录,头文件所在 
/usr/local/lib   # 动态库目录

我这里还没有

请添加图片描述

请添加图片描述

查找命令sudo find | grep "VTK"

打印输出如下,说明系统自带的版本为vtk-6.3

./usr/lib/cmake/vtk-6.3/
............
./usr/lib/python2.7/dist-packages/vtk
............
./usr/include/vtk-6.3/

可以看出系统自带的vtk目录和源码安装的vtk冲突性不大,最大的冲突可能存在于不同的python环境,在配置不同python环境时可能需要单独考虑,见2.4 使用源码方式,安装python-pcl修改配置setup.py文件

(3)下载VTK7.1.1源码

点击VTK下载网址,依次点击Download the earlier release (7.1.1),VTK-7.1.1.tar.gz

请添加图片描述请添加图片描述

(4) 解压与编译、安装

tar -xf VTK-7.1.1.tar.gz
cd VTK-7.1.1
mkdir build
cd build && cmake ..
make -j8  #或 make -j16
sudo make install

看终端打印信息,得出安装在
-- Installing: /usr/local/lib/cmake/vtk-7.1/

请添加图片描述

-- Installing: /usr/local/include/vtk-7.1/

请添加图片描述

还有一些后缀.so的库文件

2.4 使用源码方式,安装python-pcl

(1) 查看是否安装了pcl

pip list | grep "pcl"
终端打印:pcl 0.0.0.post1

(2) 如果安装了,就先删除安装的pcl

这一步骤很重要,否则后期依旧会报未定义符号的错误,例如我这次使用conda的虚拟环境yolov5py37,删除pcl
查看pcl文件地址: pip install pcl
终端打印: Requirement already satisfied: pcl in /home/meng/anaconda3/envs/yolov5py37/lib/python3.7/site-packages (0.0.0.post1)
删除: rm -rf /home/meng/anaconda3/envs/yolov5py37/lib/python3.7/site-packages/pcl/

(3) 下载python-pcl源码

git clone https://github.com/strawlab/python-pcl.git(原版,如果速度慢请使用下面的)
git clone https://gitee.com/lucy2020/python-pcl.git

(4) 修改配置setup.py文件

修改vtk版本与上面安装vtk的包含目录与库目录,不然会报错cannot find -lvtk****

修改726行为:vtk_version = '7.1'
修改729行为:vtk_include_dir = os.path.join('/usr/local/include/vtk-' + vtk_version)
修改730行为:vtk_library_dir = os.path.join('/usr/local/lib')

修改前如下,指向的是非源码安装的目录,见前面2.3 使用源码方式**安装VTK7.1版本** (2)的分析

            vtk_version = '7.0'
            # pcl 1.8.1?
            # vtk_version = '8.0'
            vtk_include_dir = os.path.join('/usr/include/vtk-' + vtk_version)
            vtk_library_dir = os.path.join('/usr/lib')

修改后如下,指向的是源码安装的目录,见前面2.3 使用源码方式**安装VTK7.1版本** (2)的分析

            vtk_version = '7.1'
            # pcl 1.8.1?
            # vtk_version = '8.0'
            vtk_include_dir = os.path.join('/usr/local/include/vtk-' + vtk_version)
            vtk_library_dir = os.path.join('/usr/local/lib')

(5) 编译与安装

进入python环境yolov5py37

cd /home/meng/Downloads/python-pcl
python setup.py build_ext -i
python setup.py install

终端会打印输出下面类似语句,表示安装在python环境yolov5py37中了

Installed /home/meng/anaconda3/envs/yolov5py37/lib/python3.7/site-packages/python_pcl-0.3.0rc1-py3.7-linux-x86_64.egg
Processing dependencies for python-pcl==0.3.0rc1
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误可能是因为你没有正确导入pcl库或者版本不兼容导致的。 首先,确保你已经正确安装pcl库并且已经将其导入到你的Python脚本中。可以通过以下命令来安装pcl库: ``` pip install python-pcl ``` 然后,在脚本中导入pcl库并尝试创建一个PointCloud对象: ```python import pcl cloud = pcl.PointCloud() ``` 如果仍然出现`AttributeError: module 'pcl' has no attribute 'PointCloud'`错误,可能是因为版本不兼容导致的。你可以尝试升级pcl库到最新版本,或者降级到与你的代码相兼容的版本。可以通过以下命令来升级pcl库: ``` pip install --upgrade python-pcl ``` 如果仍然无法解决问题,建议检查一下你的代码是否有其他错误或者是否正确导入了其他依赖库。 ### 回答2: AttributeErrorPython中的一个异常类型,用于指示对象没有所需的属性或方法。 在这个特定的错误消息中,错误发生在pcl模块中。它告诉我们pcl模块中没有名为PointCloud的属性。 要解决这个问题,你需要检查你的代码中是否正确导入了pcl模块,并且确保pcl模块中确实存在名为PointCloud的属性。 假设你已经正确导入了pcl模块,但仍然遇到了这个错误,那么很可能是因为你使用的pcl模块的版本与你查找的属性不兼容。在这种情况下,你应该检查你使用的pcl模块的文档,看看是否有关于PointCloud的详细信息和用法示例。 如果pcl模块确实没有名为PointCloud的属性,你可以尝试查找pcl模块中其他类或方法来满足你的需求。如果你无法在pcl模块中找到适合的解决方案,你可能需要考虑使用其他库或方法来处理你的数据。 总之,要解决这个错误,你需要仔细检查你的代码,确保正确导入了pcl模块,并查看pcl模块的文档以确保你使用的模块版本与你期望的功能兼容。 ### 回答3: AttributeError: module 'pcl' has no attribute 'PointCloud' 是一个错误消息,它指出在名为"pcl"的模块中找不到名为"PointCloud"的属性。 该错误通常发生在使用pcl库时,尝试使用不存在的属性或者错误地引用属性。可能的原因有: 1. pcl库版本不兼容:检查所使用的pcl库的版本是否与代码兼容。这种情况下,尝试升级或降级pcl库至与代码相匹配的版本。 2. 没有正确导入pcl库:请确认是否正确导入了pcl库。检查有没有拼写错误、是否缺少必要的导入语句等。 3. 名称冲突:确保没有相同名称的模块或变量与pcl库发生冲突。检查代码中是否另有名为"pcl"的模块或变量存在。 4. 安装问题:如果这是首次使用pcl库,可能是由于安装问题导致。尝试重新安装pcl库,并确保遵循官方文档上的安装指南。 总之,解决此错误的关键是检查pcl库的正确性、版本兼容性、导入语句和名称冲突等方面的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值