python - 你如何让 VSCode 中的 pylint 知道它在一个包中(以便相对导入工作)?

标签 python python-3.x visual-studio-code python-import pylint

布局:

workspace/
  .vscode/launch.json
  main.py
  foo.py:
    def harr(): pass
启动.json:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Module",
            "type": "python",
            "request": "launch",
            "cwd": "${workspaceFolder}/..",
            "module": "${workspaceFolderBasename}"
        }
    ]
}
main.py 和 pylint 错误:
from .foo import harr
   ^

Attempted relative import beyond top-level package - pylint(relative-beyond-top-level)
如果不是因为 linter 错误,程序运行良好。我曾尝试在 __init__.py 和 pylintrc 中修改 sys.path 但结果是一样的。
VSCode 有没有办法对文件运行 linting 并同时知道该文件是包的一部分?
我已经浏览过 vscode linting和 pylint 配置文档,但没有发现像我期望的那样。这应该是如此标准,我没有得到什么?如果 pylint 不知道顶级包,它应该如何计算相对导入?

最佳答案

目前pylint无法通过相对导入准确找到模块,虽然代码可以运行,但它会弄乱路径。
您可以尝试以下两种方法来解决:
1.在setting.json文件中添加以下设置。

"python.linting.pylintArgs": 
  ["--disable=all", 
    "--enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode",
    "--disable=E0402", 
  ],

(由于代码没有问题,我们可以关闭这种类型的pylint提示。)
  • 由于相对导入方式会使pylint混淆,所以我们可以避免这样的使用。
    使用' from foo import harr ' 而不是 ' from .foo import harr '。

  • 引用:Default Pylint rules .

    关于python - 你如何让 VSCode 中的 pylint 知道它在一个包中(以便相对导入工作)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63373911/

    相关文章:

    python - 在valueError循环中中断导致错误

    Python正则表达式与字符串匹配的问题

    go - 在使用 Run/Run&Debug (F5/CTRL+F5) VS 代码选项时,如何配置 Visual Studio 代码以运行已编译的 Go 代码?

    git - VS 代码 Git : spawn EBADF

    Python 国际象棋实现

    python - 创建一个函数来标准化分类变量 (python)

    python - 两个数据帧上列函数的高效 pandas 操作

    python - 列上的十分位数 Pandas DataFrame

    reactjs - create-react-app 没有使用我的 eslint 配置文件

    python - 如何在 PyMC3 中定义自定义先验