次のような相対インポートに気付きました。
from .foo import myfunc
print myfunc # ok
print foo # ok
foo と myfunc の両方をインポートします。そのような動作はどこかに文書化されていますか? 無効にできますか?
- アップデート
基本的に問題は次のとおりです。
bar/foo/__init__.py
:
__all__ = ['myfunc']
def myfunc(): pass
bar/__init__.py
:
from .foo import *
# here I expect that there is only myfunc defined
main.py
:
import foo
from bar import * # this import shadows original foo
に追加__all__
することもできbar/__init__.py
ますが、その場合、いくつかの場所で名前を繰り返さなければなりません。