Pylint:相对导入应该是

pis*_*hio 17 python pylint

我正在用Pylint检查一个模块.该项目具有以下结构:

/builder
    __init__.py
    entity.py
    product.py
Run Code Online (Sandbox Code Playgroud)

在产品中我导入如下的实体:

from entity import Entity
Run Code Online (Sandbox Code Playgroud)

但是Pylint感叹道:

************* Module builder.product
W:  5,0: Relative import 'entity', should be 'builder.entity'
Run Code Online (Sandbox Code Playgroud)

但是from builder.entity import Entity无法识别包,from ..builder.entity import Entity也无法正常工作.Pylint在抱怨什么?谢谢

glg*_*lgl 18

Python 2.5引入了相对导入.他们允许你这样做

from .entity import Entity
Run Code Online (Sandbox Code Playgroud)


sth*_*ult 8

__init__.py文件使pylint认为您的代码是一个包(即"构建器").

因此,当pylint看到"来自实体导入实体"时,它会将其正确检测为隐式相对导入(您可以使用'.'进行显式相对导入,因为python 2.6,正如其他海报所宣传的那样)并报告它.

然后,如果"来自builder.entity导入实体"不起作用,则它是PYTHONPATH pb:确保包含"builder"目录的目录位于PYTHONPATH(另一个pb由gurney alex提出).除非你不打算编写一个包,否则删除__init__.py可能就好了.