【问题标题】:Why is pylint not satisfied with my working code?为什么 pylint 对我的工作代码不满意?
【发布时间】:2018-10-17 14:44:20
【问题描述】:

我正在使用 VS Code 编写 python,但我遇到了关于 pylint 的问题。
我有一个基本的文件结构

.env
-src
   __init__.py
   -module1
       __init__.py
       -file1.py
       -file2.py
   -module2
       __init__.py
       -file.py
   main.py


如果我像这样在main.py 中导入some_methodfrom module1.file1 import some_method 代码按预期运行,但pylint 不满意并说Unable to import module1.file1。 如果我像这样导入它: from src.module1.file1 import some_module pylint 然后满足但它破坏了我的代码(这不是它应该根据我的文件结构导入的方式),返回一个错误说“没有名为'src'的模块“这是我所期望的。
我尝试在 vs 代码中搜索特定于 pylint 的解决方案,但没有一个有效。我不断得到答案或“解决方案”,说这与执行 pylint 的路径有关。
我在与我的 'src' 文件夹相同的文件夹级别中运行一个 virtualenv,pylint 使用 python3.6 安装在该 virtualenv 中。这是设置中的路径问题还是我忽略了一些明显的东西?

【问题讨论】:

  • pylint 的工作目录是什么?缺少任何 __init__.py 文件,从技术上讲,您没有任何明确的包。但是,我认为来自main.py 的导入,因为它位于src,所以将同一目录中的任何目录视为包。 pylint 似乎使用包含 src 的任何目录作为“隐式”包。
  • 我在每个目录中都有__init__.py 文件(我的问题中没有包含它。)
  • src/ 中有没有?这(结合 pythonpylint 可能被视为隐式包的差异)可以解释它。
  • 是的。在我的问题中,前一种导入方式的问题不在于代码无法运行,它只会使 pylint 吐出错误,但在后一种情况下,我的代码会中断但满足 pylint。不知道这是否有帮助,但我的 virtualenv 文件夹和 /src 文件夹在我的目录树中位于同一级别
  • src 中包含__init__.py 文件可能不正确。更可能的实际问题是您正在尝试运行pylint src,而您想要的是运行pylint src 目录。

标签: python python-3.x visual-studio-code vscode-settings


【解决方案1】:

您可以使用的一种解决方案是在模块之前使用. 相对引用模块:

from .module1.file1 import some_method

【讨论】:

  • 抱歉,我的电脑强制重启,我的问题还没有完成。我使用我正在使用的导入方法稍微清理了我的文件结构。希望这可以清除它一点
猜你喜欢
  • 2019-06-10
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
相关资源
最近更新 更多