4

我正在玩 pylint 并使用 sonarqube 进行代码分析。一切都已安装并且工作正常。但是我收到错误“f0401”说我无法导入模块。这是我的目录结构。

top level:
    directoryA
        __init__.py
        folderA
        some .py files        
    directoryB
        __init__.py
        folderA
        some .py files
    directoryC
        __init__.py
        folderA
        some .py files

我在目录A 上运行 pylint。目录 A 中的 .py 文件有一些从目录 B 和目录 C 的导入。因此,当我在 directoryA 上运行 pylint 时,会出现导入错误,例如无法“导入 directoryB.somemodule”。我希望我能够解释清楚。

一些机构可以帮助他如何解决这个问题。PS 如果有人向我指出一些关于使用和调整 pylint 的优秀文档和教程,那就太好了。

4

2 回答 2

3

Pylint 依赖于正确PYTHONPATH设置。如果你键入会发生什么python toplevel/directoryA/file.py?进口应该工作。

提示:如果他们不这样做,您可能想要运行export PYTHONPATH=toplevel,或类似的东西。

于 2013-07-24T15:36:08.573 回答
2

pylint 会将当前目录作为 PYTHONPATH 的一部分(这只是一个环境变量,指示 python 解释器应该在哪里搜索包)。

因此,如果您在 dirA 中运行 pylint 它会知道 dir A 中的所有内容(例如文件夹 A)和标准 PYTHONPATH 中的其他内容,但不知道 dir B,因为 pylint 不知道在哪里可以找到directoryB.somemodule

最简单的解决方案是在项目的根目录中运行 pylint xxxx 。否则,您必须将其添加到 PYTHONPATH,或使用 pylintrc 文件(建议)。

有关 pylint 运行的更多详细信息,请查看其文档以获取详细信息

于 2015-08-04T08:29:18.977 回答