python 2では、次のようなモジュールを作成できます。
parent
->module
->__init__.py (init calls 'from file import ClassName')
file.py
->class ClassName(obj)
そして、これは機能します。 python 3コマンドインタプリタから同じことを行うことができ、動作します(編集:インタプリタを実行しているのと同じディレクトリにいたため、これは動作しました)。 pyと同じことを次のように行います:
"""__init__.py"""
from file import ClassName
"""file.py"""
class ClassName(object): ...etc etc
ImportErrorが発生します。名前「ClassName」をインポートできません。「file」がまったく表示されません。直接参照することですべてをインポートできますが、モジュールをインポートするとすぐにこれが行われます(残りのコードベースと完全に矛盾しているため、これは行いたくありません)。何が得られますか?
python 3では、インポートを実行するための相対パスが指定されていない限り、すべてのインポートは絶対です。絶対インポートまたは相対インポートを使用する必要があります。
絶対インポート:
from parent.file import ClassName
相対的なインポート:
from . file import ClassName
# look for the module file in same directory as the current module