编程语言
首页 > 编程语言> > Python中尊重命名空间的相对导入

Python中尊重命名空间的相对导入

作者:互联网

我有这个文件夹结构:

package/
    __init__.py
    misc/
        __init__.py
        tools.py
    subpackage/
        __init__.py
        submodule.py

我在submodule.py中,我想导入misc.tools.我不想使用绝对导入来导入package.misc.tools,因为那样,我的包仅在PYTHONPATH上有效.所以我想使用相对进口.但是然后,我也希望导入的名称是misc.tools,而不仅仅是工具.

可能吗?

解决方法:

关于什么…:

from .. import misc
from ..misc import tools as _

print misc.tools.__file__

如打印确认,这将使misc.tools可用,并带有正确的名称和内容.

不可避免地,它还会将相同的模块绑定到某些裸名上-我选择_作为典型的“扔掉的裸名”,但是如果您愿意的话,当然可以在此之后删除_,这不会影响杂项.tools.

另外,在其__init__.py(或在tools.py中特别设置)中设置的misc的任何其他属性都将可用,但是,如果裸名misc本身可用(必须是复合名称misc.tools,则必须如此),那么不可避免的是它将拥有它自己构建的所有属性(或从其他执行的代码为其外部构建的属性).

标签:import,relative-path,python
来源: https://codeday.me/bug/20191024/1919847.html