使 python3 子包模块可用于在主包命名空间中导入
Make python3 subpackage module available for import in main package namespace
我有以下目录结构
mainpackage
├── __init__.py
└── subpackage
├── __init__.py
└── module.py
Module.py 包含
def test():
print("test called")
使用 python3 我希望使 module.py 模块可用于在 mainpackage 命名空间中导入。到目前为止,我的主包 __init__.py 文件看起来像这样
from .subpackage import module
我希望能够打电话
import mainpackage.module
但这抛出
ImportError: No module named 'mainpackage.module'
为了清楚起见,我不是希望将测试函数导入主包命名空间——我想要整个模块。这可能吗 ?任何帮助将不胜感激。
以这种方式导入 from mainpackage.subpackage import module
并且您不需要 from .subpackage import module
在初始化文件中
据我所知,您无法像您尝试的那样在主包的命名空间中提供子包的模块:
import mainpackage.module
在 mainpackage
的子目录中查找模块,而不是在任何其他(更深的)子目录中。
您在 mainpackage\__init.py__
中尝试的是正确的。你的
from .subpackage import module
将使该模块在 mainpackage
级别上可用。如果您输入 IPython console
import mainpackage
mainpackage.module
将给出以下输出
<module 'mainpackage.subpackage.module' from 'your\path\mainpackage\subpackage\module.py'>
但是import mainpackage.module
还是不行。如果您现在想使用 module
作为实例,您必须使用
from mainpackage import module
这将允许您像这样使用您的函数
module.test
我有以下目录结构
mainpackage
├── __init__.py
└── subpackage
├── __init__.py
└── module.py
Module.py 包含
def test():
print("test called")
使用 python3 我希望使 module.py 模块可用于在 mainpackage 命名空间中导入。到目前为止,我的主包 __init__.py 文件看起来像这样
from .subpackage import module
我希望能够打电话
import mainpackage.module
但这抛出
ImportError: No module named 'mainpackage.module'
为了清楚起见,我不是希望将测试函数导入主包命名空间——我想要整个模块。这可能吗 ?任何帮助将不胜感激。
以这种方式导入 from mainpackage.subpackage import module
并且您不需要 from .subpackage import module
在初始化文件中
据我所知,您无法像您尝试的那样在主包的命名空间中提供子包的模块:
import mainpackage.module
在 mainpackage
的子目录中查找模块,而不是在任何其他(更深的)子目录中。
您在 mainpackage\__init.py__
中尝试的是正确的。你的
from .subpackage import module
将使该模块在 mainpackage
级别上可用。如果您输入 IPython console
import mainpackage
mainpackage.module
将给出以下输出
<module 'mainpackage.subpackage.module' from 'your\path\mainpackage\subpackage\module.py'>
但是import mainpackage.module
还是不行。如果您现在想使用 module
作为实例,您必须使用
from mainpackage import module
这将允许您像这样使用您的函数
module.test