首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >难以在python linter的作用域中包含额外的intellisense路径

难以在python linter的作用域中包含额外的intellisense路径
EN

Stack Overflow用户
提问于 2018-10-21 11:55:17
回答 2查看 793关注 0票数 0

我在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模块和虚拟环境中的模块。

EN

回答 2

Stack Overflow用户

发布于 2018-10-24 04:43:53

这取决于链接器,但是如果链接器支持传递额外目录的方法,则可以通过您的设置将额外的参数传递给链接器,例如python.linting.flake8Args

票数 0
EN

Stack Overflow用户

发布于 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中,这对我的从来都不起作用。

添加

代码语言:javascript
复制
[MASTER]
init-hook='import sys; sys.path.append("/opt/ros/melodic/lib/python2.7/dist-packages")'

(如果适用的话还有其他路径)到~/.pylintrc最终做到了这一点。

由于扩展也正确地设置了echo $PYTHONPATH

代码语言:javascript
复制
[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一样。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52911986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档