导入自定义模块时省略子目录 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 并且模块中有一些实现更改
- 更改您正在导入的 function/class 的位置
- 删除了一个模块并将其内容放入同一包的另一个模块中
那么您的导入将会中断。
这就是为什么所有第三方 libraries/packages 都包括他们所有的消耗品 functions/classes/modules
在他们包的根 __init__.py
文件中。
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 并且模块中有一些实现更改
- 更改您正在导入的 function/class 的位置
- 删除了一个模块并将其内容放入同一包的另一个模块中
那么您的导入将会中断。
这就是为什么所有第三方 libraries/packages 都包括他们所有的消耗品 functions/classes/modules
在他们包的根 __init__.py
文件中。