python:如何直接在另一个包中调用一个包中的模块中的构造函数

标签 python python-module

我正在将一些 matlab 代码移植到 python 中。在这种情况下,我需要使用包和模块。相关的包目录结构如下所示:

toppackage
    __init__.py
    subpackage
        __init__.py
        module.py
        ...

在我使用该包的脚本中,我可以像这样工作:

from toppackage.subpackage.module import SomeClass
s = SomeClass()

但我更喜欢这样工作:

import toppackage %somewhere at the beginning of file
s = toppackage.subpackage.module.SomeClass()

我看到这是在 numpy 中完成的。但我在文档中找不到它。我怎样才能做到这一点?

提前致谢。

最佳答案

您需要导入__init__.py文件中包含的包。

您可以导入 toppackage/__init__.py 中的包,例如:

import toppackage.subpackage.module

或者您可以仅导入每个直接包含的包,因此在 toppackage/__init__.py 中:

from . import subpackage

并在toppackage/subpackage/__init__.py中:

from . import module

仅导入顶级包不会自动使包含的包可用。您需要在某处显式导入一次完整路径,然后才能正常工作。

numpy 包导入顶级 __init__.py 中的嵌套包。

关于python:如何直接在另一个包中调用一个包中的模块中的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443995/

相关文章:

Python:是否可以只从 sys.path 中的文件夹中获取特定模块

python - 没有名为 'pip._vendor.cachecontrol' 的模块

python - 如何递归获取 python 包中的所有子模块?

python - 在 Python 中没有 .py 的模块作为脚本?

Python unittest - 在 0.000 秒内运行 0 次测试

python - 从包外部导入 python 模块会产生意外的行为

python - numpy 中不同矢量化方法的性能

python - Tkinter 窗口事件和属性

python - Pandas - 多数据框多列条件检查和分配

python - 如何设置 pep8 linter 接受 2 个空格缩进?