我正在玩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的一些好的文档和教程,那将是很棒的。
答案 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了解详细信息