私はいくつかの異なる研究プロジェクトで使用できるように、私は 'msa'名前空間の下に整理するいくつかの小さなutilsモジュールを持っています。現在、私は彼らがこのように組織化されている:私は名前に「msa_」を回避し、次のように使用したいしかし既存のモジュールと同じ名前のPythonモジュール名
# folder structure:
packages <-- in my pythonpath
--msa
----msa_utils.py
----msa_geom.py
----msa_pyglet.py
----msa_math.py
----etc
# imported and used this like
from msa import msa_pyglet
from msa import msa_math
msa_pyglet.draw_rect(msa_math.lerp(...))
:
# folder structure:
packages <-- in my pythonpath
--msa
----utils.py
----geom.py
----pyglet.py
----math.py
----etc
# imported and used this like
import msa.pyglet
import msa.math
msa.pyglet.draw_rect(msa.math.lerp(...))
からインポートするときにこれは、名前の競合が発生することはありませんしかし、モジュール自体が衝突する名前を持つモジュールをインポートすると、名前の競合が発生します。例えば。 msa/pygletはpyglet(外部のもの)をインポートする必要がありますが、自身をインポートしようとします。同様に、標準の数学ライブラリをインポートしようとするモジュールは、自分の数学モジュールだけをインポートします。それはすべて理解できるものです。しかし、これに対処する通常のpythonicの方法は何ですか?各モジュールファイルにグローバルに一意の名前を付ける必要がありますか?
おそらく関連:[同じ名前のモジュールが存在する場合、組み込みライブラリからインポートする](http://stackoverflow.com/questions/6031584/importing-from-builtin-library-when-module-with-same-name-exists ) – Aprillion
@Aprillion:同じ名前のトップレベルパッケージが別のものをシャドーイングし、* packages *には関係しません。 –