gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:25 25 4
gpt4 key购买 nike

我有这个文件夹结构:

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

我在 submodule.py 中,我想导入 misc.tools。我不想使用绝对导入来导入 package.misc.tools,因为那样我的包只有在 PYTHONPATH 上时才能工作。所以我想使用相对导入。但是,我还希望导入的名称是 misc.tools,而不仅仅是 tools

这可能吗?

最佳答案

那...呢:

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

print misc.tools.__file__

这使得 misc.tools 可用,正如 print 确认的那样,并且具有正确的名称和内容。

不可避免地,它将同一个模块绑定(bind)到某个裸名——我选择了_作为典型的“一次性裸名”,当然你可以del _ 就在那之后,如果你愿意的话,这不会影响 misc.tools

此外,在其 __init__.py(或特别是在 tools.py)中设置的 misc 的任何其他属性都将可用,但是然后,如果裸名 misc 本身可用(如果需要复合名称 misc.tools 就必须可用),那么它将不可避免地具有它为之构建的所有属性本身(或者从其他执行的代码中为它构建的外部代码)。

关于python - Python 中尊重命名空间的相对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1671362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com