Mat*_*ics 6 python pylint python-import python-3.x visual-studio-code
布局:
workspace/
.vscode/launch.json
main.py
foo.py:
def harr(): pass
Run Code Online (Sandbox Code Playgroud)
启动.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Module",
"type": "python",
"request": "launch",
"cwd": "${workspaceFolder}/..",
"module": "${workspaceFolderBasename}"
}
]
}
Run Code Online (Sandbox Code Playgroud)
main.py 和 pylint 错误:
from .foo import harr
^
Attempted relative import beyond top-level package - pylint(relative-beyond-top-level)
Run Code Online (Sandbox Code Playgroud)
如果不是因为 linter 错误,程序运行良好。我曾尝试在 __init__.py 和 pylintrc 中修改 sys.path 但结果是一样的。
VSCode 有没有办法对文件运行 linting 并同时知道该文件是包的一部分?
我已经浏览了vscode linting和 pylint 配置文档,但没有发现我所期望的。这应该是如此标准,我没有得到什么?如果 pylint 不知道顶级包,它应该如何计算相对导入?
目前pylint无法通过相对导入准确找到模块,虽然代码可以运行,但它会弄乱路径。
您可以尝试以下两种方法来解决:
1.在setting.json文件中添加如下设置。
Run Code Online (Sandbox Code Playgroud)"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”。
参考:默认 Pylint 规则。
小智 5
今天早上我遇到了同样的问题。
事实证明,您只需在根路径中添加 init .py 文件即可。
workspace/
.vscode/launch.json
__init__.py
main.py
foo.py
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1918 次 |
| 最近记录: |