与现有模块同名的python模块名

2024-05-28 18:51:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有许多小的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式的处理方式是什么呢?是否必须为每个模块文件指定一个全局唯一的名称?在


Tags: 模块项目frompyimport名称packages空间
1条回答
网友
1楼 · 发布于 2024-05-28 18:51:47

在python2中,在没有包限定符的包中导入确实首先查找package local模块。在

{{{cd2>因此,{cd2}前一级被认为是

切换到absolute imports以使Python 3行为成为默认行为,其中非限定名称总是顶级名称:

from __future__ import absolute_import

现在import pyglet只能找到顶层名称,而不能msa.pyglet。要引用msa命名空间中的其他模块,请使用from . import pyglet或{}。在

有关详细信息,请参见PEP 328 Imports: Multi-Line and Absolute/Relative。在

相关问题 更多 >

    热门问题