パッケージ a があり、ツリーは次のとおりです。
a/
/__init__.py
/b.py
どうすればいいimport a.b as a_.b
ですか?
パッケージ a があり、ツリーは次のとおりです。
a/
/__init__.py
/b.py
どうすればいいimport a.b as a_.b
ですか?
次の 2 行で行う必要があります。
import a as a_
from a import b
print(a_.b)
# <module 'a.b' from '.\\a\\b.py'>
または:
import a as a_
import a.b
print(a_.b)
# <module 'a.b' from '.\\a\\b.py'>
前者には名前空間に配置b
されるという欠点があり、後者には名前空間に配置されるという欠点がありa
ます。del b
必要に応じて、それぞれとを使用して修正できますdel a
。
または、2 行目をそれぞれfrom a import b as _
またはとして記述し、名前空間に表示されないようにすることもできます。import a.b as _
b
a
これを行う 1 つの方法は、名前 a_ を sys.modules 辞書に登録することです。
import sys
import a as a_
sys.modules['a_'] = a_
import a_.b
警告: これを行うa_
と、この python セッションに対してグローバルに登録されるため、これを試みる他のモジュールimport a_
はa
.
あなたの特定のケースでは、グローバルな影響があるため、これはおそらく悪い方法です。ただし、これは、グローバルな名前変更が必要な場合に役立ちます。