次の行を含むextended.py
というモジュールがあります。
from .basic import BasicModule
ファイルbasic.py
は、__init__.py
と同じディレクトリにあります。ただし、次のように実行しようとすると:
python extended.py
エラーが表示されます:
ValueError: Attempted relative import in non-package
次の行も追加します。
from __future__ import absolute_import
問題を解決しません。たぶん私はあまりにも疲れて明らかなものを見ることができません-しかし、私はここで問題を見ません。
相対インポートはパッケージに対してのみ機能しますが、extended.py
代わりにトップレベルモジュールを実行しています。
現在のディレクトリには、__init__.py
ファイルですが、それではexended.py
まだパッケージの一部。
何かをパッケージと見なすには、代わりにディレクトリ名をインポートする必要があります。以下が機能します:
main.py
packagename\
__init__.py
basic.py
extended.py
その後、main.py
put:
import packagename.extended
thenのみがパッケージのextended
部分であり、相対的なインポート作業を行います。
相対的なインポートには、相対的なものがありますto、packagename
親。