我正在用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)
__init__.py文件使pylint认为您的代码是一个包(即"构建器").
因此,当pylint看到"来自实体导入实体"时,它会将其正确检测为隐式相对导入(您可以使用'.'进行显式相对导入,因为python 2.6,正如其他海报所宣传的那样)并报告它.
然后,如果"来自builder.entity导入实体"不起作用,则它是PYTHONPATH pb:确保包含"builder"目录的目录位于PYTHONPATH(另一个pb由gurney alex提出).除非你不打算编写一个包,否则删除__init__.py可能就好了.