在http://pythoncentral.io/how-to-create-a-python-package/
我有一个类似的文件结构,如下所示,其中哺乳动物.py和birds.py用相同的名称定义类:
Project/
Animals/
__init__.py
Mammals.py
Birds.py
当在
Project/
目录中运行ipython解释器,且__init__.py
为空时,以下操作有效:from Animals.Mammals import Mammals
x = Mammals()
x.printMammals()
我希望能够写
from Animals import Mammals
而不是from Animals.Mammals import Mammals
。我相信这样做的方法是使__init__.py
文件的内容如下:from Mammals import Mammals
from Birds import Birds
但是,当这样做时,从一个来源类似的ipython解释器中,以下输入会产生一个错误:
In [1]: from Animals import Mammals
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-6d651848af9b> in <module>()
----> 1 from Animals import Mammals
/Users/username/Project/Animals/__init__.py in <module>()
----> 1 from Mammals import Mammals
2 from Birds import Birds
ImportError: No module named 'Mammals'
我觉得我犯了一个简单的错误,但找不到。谢谢你的帮助!
最佳答案
将以下代码放入__init__.py
目录中的Animals
中。
python 3.x版本:
from .Mammals import Mammals
from .Birds import Birds
在2.x上:
from __future__ import absolute_import
from .Mammals import Mammals
from .Birds import Birds