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