无法导入模块错误在pylint中。

5
我正在使用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进行了一些导入。因此,当我在目录A上运行pylint时,我会得到导入错误,例如无法“导入directoryB.somemodule”。希望我能够清楚地解释这个问题。
有人可以帮助我解决这个问题吗?附注:如果有人指出一些使用和调整pylint的好文档和教程,那就太好了。
2个回答

3

Pylint依赖于正确设置PYTHONPATH。如果您键入python toplevel/directoryA/file.py,会发生什么?那么导入应该可以正常工作。

提示:如果导入不起作用,则可能需要运行export PYTHONPATH=toplevel或类似的命令。


我不确定如何设置PYTHONPATH。我是新手,正在努力学习。我尝试按照您说的方式导出PYTHONPATH,但它没有起作用。是否与VIRTUALENV有关?我正在使用VIRTENV。 - hjelpmig

2

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

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接