导入自定义模块时省略子目录 python

Omitting subdirectories when import custom modules python

crispy13/
    __init__.py
    core/
        __init__.py
        ecf.py

如何通过以下方式加载ecf模块?

from crispy13 import ecf
OR
from crispy13.ecf import *

而不是
from crispy13.core.ecf import *

crispy13/__init__.py中将包导入为

from .core import ecf

可以通过以下方式完成

crispy13/__init__.py 中将您的模块导入为

from .core import ecf

您还可以在 __init__.py 文件中使用 __all__ 变量。

这是一种非常好的导入方式modules/functions/classes。

稍微了解为什么我们以这种方式导入。
假设您正在使用第三方 library/package 并且模块中有一些实现更改

  1. 更改您正在导入的 function/class 的位置
  2. 删除了一个模块并将其内容放入同一包的另一个模块中

那么您的导入将会中断。

这就是为什么所有第三方 libraries/packages 都包括他们所有的消耗品 functions/classes/modules 在他们包的根 __init__.py 文件中。