【问题标题】:Difficulty including the extra intellisense paths in the python linter's scope困难,包括 python linter 范围内的额外智能感知路径
【发布时间】:2019-03-25 12:05:36
【问题描述】:

我在 ubuntu 16.04 上使用 ros。因此,我正在使用 python 2.7 和 ros python 模块(例如 rospy)的虚拟环境。 “python.pythonPath”设置为虚拟环境,ros模块通过“python.autoComplete.extraPaths”链接。

这会导致 python linter 为 import rospy 引发错误,声称它无法导入它。但是,python intellisense 仍然能够检测并帮助使用 rospy 模块(由于 python.autoComplete.extraPaths 设置,这很有意义)。

有没有办法为 linter 包含额外的 autoComplete 路径?在这一点上,不再包含 python 路径的虚拟环境不是一个理想的选择,所以我正在寻找一种方法让 linter 包含 ros python 模块和虚拟环境中的模块的额外路径。

【问题讨论】:

    标签: python visual-studio-code intellisense pylint


    【解决方案1】:

    尽管使用了 VSCode ROS 扩展程序,因此我遇到了上述 linting 错误,因此 settings.json 自动配置了 "python.autoComplete.extraPaths": ["/opt/ros/melodic/lib/python2.7/dist-packages"] 和我的工作区路径。

    我一直尝试按照here 的建议将带有 init-hook 的路径添加到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 的 Ubuntu 18.04 和带有 ROS、Python 和 Pylint 扩展的最新 VS Code 上,在 VS Code 中打开工作区根文件夹之后,无需配置任何 .pylintrc 即可解决rospy它至少用 catkin_make 构建过一次。

    要从 <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 所述。)

    【讨论】:

      【解决方案2】:

      这取决于 linter,但如果 linter 支持传递额外目录的方式,例如,您可以通过设置将额外参数传递给 linter。 python.linting.flake8Args.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-14
        • 2010-10-28
        • 2019-11-11
        • 2022-10-23
        • 2020-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多