无法在pylint中导入模块错误

时间:2013-07-24 14:20:04

标签: sonarqube pylint sonar-runner

我正在玩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

我在directoryA上运行pylint。 directoryA中的.py文件有一些来自directoryB和directoryC的导入。因此,当我在directoryA上运行pylint时,我会收到导入错误,例如无法“导入directoryB.somemodule”。我希望我能够清楚地解释清楚。

有些人可以帮助他解决这个问题。附:如果有人指出我使用和调整pylint的一些好的文档和教程,那将是很棒的。

2 个答案:

答案 0 :(得分:2)

Pylint依赖于正确的PYTHONPATH被设置。如果您输入python toplevel/directoryA/file.py会怎样?那么进口应该有效。

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

答案 1 :(得分:1)

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

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

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

有关pylint run的更多详细信息,请查看its document了解详细信息