我在ubuntu 16.04上使用ros。正因为如此,我正在为python2.7和ros python模块(例如rospy)创建一个虚拟环境。将"python.pythonPath“设置为虚拟环境,并且通过"python.autoComplete.extraPaths”链接ros模块。
这会导致python linter在导入rospy时引发错误,声明它无法导入它。然而,python intellisense仍然能够检测并帮助rospy模块(由于python.autoComplete.extraPaths设置,这是有意义的)。
有没有办法把autoComplete的额外路径也包含进来呢?在这一点上,不再包含python路径的虚拟环境不再是一个理想的选择,所以我正在寻找一种方法来让linter包含额外的路径,用于ros python模块和虚拟环境中的模块。
发布于 2018-10-24 04:43:53
这取决于链接器,但是如果链接器支持传递额外目录的方法,则可以通过您的设置将额外的参数传递给链接器,例如python.linting.flake8Args。
发布于 2020-02-28 22:33:01
尽管我使用了VSCode ROS扩展,并因此使用"python.autoComplete.extraPaths": ["/opt/ros/melodic/lib/python2.7/dist-packages"]和我的工作区路径自动配置了settings.json,但我还是遇到了前面提到的linting错误。
我一直按照here 的建议,用一个初始化钩子将路径添加到python.lintin.pylintArgs中,这对我的从来都不起作用。
添加
[MASTER]
init-hook='import sys; sys.path.append("/opt/ros/melodic/lib/python2.7/dist-packages")'(如果适用的话还有其他路径)到~/.pylintrc最终做到了这一点。
由于扩展也正确地设置了echo $PYTHONPATH,
[MASTER]
init-hook="from pylint.config import find_pylintrc;
import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"甚至似乎可以自动加载所有路径。
编辑:
在带有ROS Melodic和带有ROS、Python和Pylint扩展的最新VS代码的Ubuntu18.04上,在VS代码中打开工作区根文件夹时,在使用catkin_make构建工作空间根文件夹至少一次后,无需配置任何.pylintrc即可解析rospy。
要从<ws>/src/<package-name>/src导入自定义Python模块,我必须将相对路径src/<package-name>/src添加到"python.autoComplete.extraPaths"。
(请确保提供<ws>/src/<package-name>/setup.py和一个空<ws>/src/<package-name>/src/<package-name>/__init__.py,就像讨论的here一样。)
https://stackoverflow.com/questions/52911986
复制相似问题