http://pythoncentral.io/how-to-create-a-python-package/ で簡略化された例を借用
次のような類似のファイル構造があります。Mammals.pyとBirds.pyは、同じ名前のクラスを定義しています。
Project/
Animals/
__init__.py
Mammals.py
Birds.py
Project/
ディレクトリ内で__init__.py
が空の状態でipythonインタープリターを実行すると、以下が機能します。
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
ただし、これを行うと、同様にProject/
ソースの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'
私が犯している単純な間違いがあるように感じますが、見つけることができません。助けてくれてありがとう!
Animals
ディレクトリ内の__init__.py
に次のコードを入力します。
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