使python3子包模块可用于在主包命名空间中导入

使python3子包模块可用于在主包命名空间中导入,python,python-3.x,python-import,importerror,Python,Python 3.x,Python Import,Importerror,我有下面的dir结构 mainpackage ├── __init__.py └── subpackage ├── __init__.py └── module.py Module.py包含 def test(): print("test called") 使用python3,我希望使module.py模块可以在mainpackage名称空间中导入。到目前为止,我的mainpackage\uuuu init\uuuuu.py文件如下所示 from .subpackag

我有下面的dir结构

mainpackage
├── __init__.py
└── subpackage
    ├── __init__.py
    └── module.py
Module.py包含

def test():
    print("test called")
使用python3,我希望使module.py模块可以在mainpackage名称空间中导入。到目前为止,我的mainpackage\uuuu init\uuuuu.py文件如下所示

from .subpackage import module
module.test
我想打个电话

import mainpackage.module
但这会使

ImportError: No module named 'mainpackage.module'

为了清楚起见,我不想将测试函数导入mainpackage名称空间-我想要整个模块。这可能吗?任何帮助都将不胜感激。

以这种方式从mainpackage.subpackage Import module导入
,而您不需要从init文件中的.subpackage Import module
导入
,据我所知,您无法像尝试的那样在mainpackage的命名空间中提供子包的模块:

import mainpackage.module
mainpackage
的子目录中查找模块,而不在任何其他(更深的)子目录中查找

您在
mainpackage\\uuu init.py\
中尝试的是正确的。你的

from .subpackage import module 
将使模块在
mainpackage
级别可用。如果您键入IPython控制台

import mainpackage
mainpackage.module
将给出以下输出

<module 'mainpackage.subpackage.module' from 'your\path\mainpackage\subpackage\module.py'>
这将允许你像这样使用你的函数

from .subpackage import module
module.test

我知道您可以这样做,但它不能在mainpackage名称空间中使用它。我想调用import mainpackage.module是否在mainpackage中有另一个使用子包的文件?目前没有,只需调用
import mainpackage.subpackage.module
,因为在mainpackage init文件中导入的内容没有任何区别。python仍然会抛出错误。基本上,您希望导入导入,但这不起作用