我有許多小型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(...))
不過,我想,以避免名稱「msa_」和使用這樣的:
# 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:談論一個頂級包的同名影子,而不涉及*包*。 –