我有许多小的utils模块,我在一个msa名称空间下组织,这样我就可以在许多不同的研究项目中使用。目前我把它们组织成这样:
# 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”,并这样使用:
^{pr2}$当从外部导入时,这不应该导致名称冲突,但是当模块本身导入具有冲突名称的模块时,会出现名称冲突。E、 msa/pyglet需要导入pyglet(外部的),但最终尝试导入自己。同样,任何试图导入标准数学库的模块都只导入我的数学模块。这是可以理解的。但是通常的Python式的处理方式是什么呢?是否必须为每个模块文件指定一个全局唯一的名称?在
在python2中,在没有包限定符的包中导入确实首先查找package local模块。在
{{{cd2>因此,{cd2}前一级被认为是
切换到absolute imports以使Python 3行为成为默认行为,其中非限定名称总是顶级名称:
现在}。在
import pyglet
只能找到顶层名称,而不能msa.pyglet
。要引用msa
命名空间中的其他模块,请使用from . import pyglet
或{有关详细信息,请参见PEP 328 Imports: Multi-Line and Absolute/Relative。在
相关问题 更多 >
编程相关推荐