Python 从未来导入绝对导入不工作?子模块不可见

Python 从未来导入绝对导入不工作?子模块不可见,python,import,Python,Import,因此,我在主范围内有一个模块bbb和ccc 我正在添加一个名为tools的库,它还有两个名为bbb和ccc的模块: 工具 __初始值 aaa.py bbb.py ccc.py 在bbb.py中,我使用以下内容导入主范围bbb: from __future__ import absolute_import import bbb 在ccc.py中,执行相同的操作: from __future__ import absolute_import import ccc 但当我导入工具并将其定向时,我只

因此,我在主范围内有一个模块bbb和ccc

我正在添加一个名为tools的库,它还有两个名为bbb和ccc的模块:

工具

__初始值 aaa.py bbb.py ccc.py 在bbb.py中,我使用以下内容导入主范围bbb:

from __future__ import absolute_import
import bbb
在ccc.py中,执行相同的操作:

from __future__ import absolute_import
import ccc
但当我导入工具并将其定向时,我只能看到:

['__builtins__', '__doc__', '__file__',
'__name__', '__package__', '__path__', 'aaa']
['__builtins__', '__doc__', '__file__',
'__name__', '__package__', '__path__', 'aaa']
但bbb和ccc似乎不可见

我在这里遗漏了什么吗?

使用点符号:

从bbb.py,如果要导入aaa.py:

从外部工具,如果要导入工具/aaa.py:

使用点符号:

从bbb.py,如果要导入aaa.py:

从外部工具,如果要导入工具/aaa.py:

但当我导入工具并将其定向时,我只能看到:

['__builtins__', '__doc__', '__file__',
'__name__', '__package__', '__path__', 'aaa']
['__builtins__', '__doc__', '__file__',
'__name__', '__package__', '__path__', 'aaa']
但bbb和ccc似乎不可见

导入包不会自动加载其所有子模块。如果要使用tools.bbb包,需要执行以下操作

import tools.bbb
# or
from tools import bbb
导入工具无法将其剪切。或者,您可以让工具显式地将其子模块加载到其_init__u; py.py中:

但当我导入工具并将其定向时,我只能看到:

['__builtins__', '__doc__', '__file__',
'__name__', '__package__', '__path__', 'aaa']
['__builtins__', '__doc__', '__file__',
'__name__', '__package__', '__path__', 'aaa']
但bbb和ccc似乎不可见

导入包不会自动加载其所有子模块。如果要使用tools.bbb包,需要执行以下操作

import tools.bbb
# or
from tools import bbb
导入工具无法将其剪切。或者,您可以让工具显式地将其子模块加载到其_init__u; py.py中:


在这种情况下,您使用“未来”东西有什么特别的原因吗?从“未来”导入“绝对”导入专门关闭您试图使用的隐式相对导入行为。@Joe我认为我的特殊情况没有得到正确的解释。主作用域中存在具有相同名称的模块ccc和bbb。我在tools下有两个模块,它们的名称相同,在每个模块中,我从主作用域导入相应的模块。这就是为什么我认为我需要明确地说,进口是绝对的;你必须明确地说,进口是相对的;您必须告诉python相对于什么“.”是当前模块“…”是父模块。。。。因此,您可以使用内置操作系统和tools.os来处理您的东西,并将它们分开处理。在这种情况下,您使用“未来”东西有什么特殊原因吗?从“未来”导入“绝对”导入专门关闭您试图使用的隐式相对导入行为。@Joe我认为我的特定情况没有得到正确解释。主作用域中存在具有相同名称的模块ccc和bbb。我在tools下有两个模块,它们的名称相同,在每个模块中,我从主作用域导入相应的模块。这就是为什么我认为我需要明确地说,进口是绝对的;你必须明确地说,进口是相对的;您必须告诉python相对于什么“.”是当前模块“…”是父模块。。。。所以你可以有操作系统内置,和工具。操作系统你的东西,并分别对待他们。谢谢。我还可以导入工具并调用tools.bbb.somemethod吗?嗯,这不是我想要的。我需要从bbb.py内部导入bbb。bbb模块在主范围内,这就是为什么我使用绝对_导入,但在导入工具时仍然无法看到bbb.py和ccc.py模块;tools.bbb tools没有名为bbbthanks的模块。我还可以导入工具并调用tools.bbb.somemethod吗?嗯,这不是我想要的。我需要从bbb.py内部导入bbb。bbb模块在主范围内,这就是为什么我使用绝对_导入,但在导入工具时仍然无法看到bbb.py和ccc.py模块;tools.bbb tools没有名为bbb的模块来解释一切。谢谢另外,如果工具位于另一个模块topmodulename.tools下,那么直接使用tools.bbb.calls的最佳方法是什么?如果您不想导入工具中的所有子模块,您将如何导入它,这样您就不需要执行像topmodulename.tools.bbb.calls这样的长调用。\uuuuu init\uuuu?@mtmtmt:从topmodulename.tools导入bbb这解释了一切。谢谢另外,如果工具位于另一个模块topmodulename.tools下,那么直接使用tools.bbb.calls的最佳方法是什么?如果您不想导入工具中的所有子模块,您将如何导入它,这样您就不需要执行像topmodulename.tools.bbb.calls这样的长调用。\uuuuu init\uuuu?@mtmtmt:从topmodulename.tools导入bbb