【发布时间】:2023-03-26 14:00:01
【问题描述】:
我创建了一个具有以下文件结构的包:
- package
- __init__.py
- load.py
- train.py
- test.py
我的__init__.py 文件只是这些文件的类的导入:
from package.load import Load
from package.train import Train
from package.test import Test
大多数时候,我想加载所有三个类,但有时我只想专门加载其中一个类。例如,在一个临时脚本(包外)中,我希望能够像这样只调用 Load 类:
from package import Load
虽然上述所有方法都适用于此设计,但我遇到了一个问题,即当我像上面一样导入 Load 时,也会加载来自训练/测试的依赖项。如何设置__init__.py 文件,以便我可以进行相同的import 调用,而无需从训练/测试中加载依赖项?
补充说明:
我这样做的原因:我有一个问题,我希望某些人能够使用 Load 类,它只使用基本 python,但是训练/测试文件包含专门的依赖项,用户只使用 Load类不想使用甚至安装。
【问题讨论】:
-
“但是,训练/测试文件包含专门的依赖项,只有 Load 类的用户不想使用甚至安装这些依赖项。”那么
package.load应该是单独打包了吧? -
一般来说,您可能是正确的。在这种情况下,包是一个通用包,单个团队将广泛用于各种项目,并且希望将包保留在单个导入调用中(主要是利用环境变量)。问题是用户拥有广泛的技术知识,并且一些更复杂的依赖项比尝试安装它们更麻烦。
-
这个问题需要更多答案!!更少的输入 => 更简单的代码
标签: python python-3.x package