Pylint“无法导入”错误,但与Pycharm一起工作正常

时间:2016-01-12 12:02:28

标签: python python-3.x pycharm importerror pylint

我程序的基本结构如下:

top_dir
__init__.py
readme.rst
    sub_dir
    __init__.py
        sub_sub_dir
        __init__.py
        example_module.py
        sub_sub_dir2
        __init__.py
        module_with_import.py

在Pycharm中,所有导入工作正常。例如,我在'module_with_import.py'中使用以下导入:

from sub_dir.sub_sub_dir.example_module import function

但是如果我在module_with_import.py上运行pylint,我将收到以下错误:

Unable to import 'sub_dir.sub_sub_dir.example_module' (import-error)

有人看到这里有什么问题吗?

2 个答案:

答案 0 :(得分:4)

模块(包)名称中不能包含减号。将Sub-dir重命名为sub_dir,将Sub-sub-dir重命名为sub_sub_dir,将Sub-sub-dir2重命名为sub_sub_dir2

接下来阅读PEP-8 The Python Style Guide

答案 1 :(得分:1)

top_dir和sub_dir的名字是一样的吗?如果是这样,并且top_dir中没有要导入的文件(仅包含在该目录中的模块),请删除__init__.py& __init__.pyc个文件,然后重试。

想象一下以下情况:

foo
__init__.py
  foo
  __init__.py
     bar
     __init__.py
     baz.py

如果您的导入语句类似于import foo.bar.bazfrom foo.bar import baz,并且您从顶级“foo”运行脚本,则导入将失败because python importing places the current directory in sys.path。您需要告诉python顶级不是模块,或者您需要将所需的路径插入到sys.path中。