Visual Studio 2017中python-pcl(Sirokujira版)无方法/参数预览解决方案咨询
解决VS2017中python-pcl无方法/参数预览的问题
嘿,我完全懂你遇到的麻烦——用conda装了sirokujira的python-pcl之后,在VS2017里写代码明明能调用方法,却看不到参数提示和可用方法列表,这对开发效率影响真的挺大的。这主要是因为python-pcl是基于C++库的Python绑定,默认没有生成VS IntelliSense能识别的类型提示文件,咱们可以通过下面几个方法来解决:
方法1:生成并添加类型提示文件(最有效)
这类C扩展库的代码提示缺失,大多可以通过生成stub文件(.pyi)来解决,步骤如下:
- 先安装生成stub的工具
mypy,打开Anaconda Prompt运行:conda install -c conda-forge mypy - 生成pcl库的stub文件,执行:
执行完后会在当前目录生成一个stubgen -o stubs pclstubs文件夹,里面有pcl子目录,包含所有生成的.pyi类型提示文件。 - 把这个
stubs/pcl目录复制到你的Anaconda环境的site-packages目录下(比如C:\Users\你的用户名\Anaconda3\envs\你的环境名\Lib\site-packages),和原本的pcl文件夹放在一起。 - 重启VS2017,打开你的项目,应该就能看到方法和参数的预览提示了。
方法2:调整VS2017的Python IntelliSense设置
有时候是VS的IntelliSense引擎没正确加载库信息,咱们可以手动配置:
- 打开VS2017,点击顶部菜单栏的
Tools > Options > Python > IntelliSense - 在“Interpreter”下拉菜单里,确保选中你安装python-pcl的那个Anaconda 3.5环境
- 勾选“Use experimental IntelliSense engine”(这个选项对C扩展库的支持更好)
- 点击下方的“Refresh DB”按钮,等待VS重新加载所有库的信息,完成后重启VS试试
方法3:手动补充Docstring(应急方案)
如果上面的方法暂时没生效,你可以查python-pcl的官方文档,把常用方法的参数、功能手动写成docstring,添加到你调用的代码里,或者自己写一个简单的wrapper函数。比如:
import pcl def my_pcl_filter(cloud): """ 点云滤波函数,调用pcl的VoxelGrid方法 :param cloud: 输入点云对象(pcl.PointCloud) :return: 滤波后的点云对象 """ vg = cloud.make_voxel_grid_filter() vg.set_leaf_size(0.01, 0.01, 0.01) return vg.filter()
这样VS就能识别你写的docstring,给出提示了。
补充小技巧
如果VS的支持还是不够,你可以临时用PyCharm打开项目——它对C扩展库的类型提示兼容性更好,先在PyCharm里确认方法参数,再回到VS写代码,也算个临时的折中方案。
内容的提问来源于stack exchange,提问作者juerg
相关产品推荐
相关产品推荐

