使python3子包模块可用于在主包命名空间中导入
我有下面的dir结构使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
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仍然会抛出错误。基本上,您希望导入导入,但这不起作用