【问题标题】:Using a seperate python function to import dependencies使用单独的 python 函数导入依赖项
【发布时间】:2018-02-01 13:56:05
【问题描述】:

一个简单的问题:我正在构建一个标准存储库来执行一些简单的机器学习任务,并且我几乎总是在这些 .py 模块中导入相同的依赖项。

我在想,如果我可以制作一个导入所有标准依赖项的 .py 文件,我的代码会稍微凌乱一点(并节省时间)。然后可以将其扩展到取决于模型的不同类,例如sklearn、xgboost 等。

1) 从外部函数调用依赖项是可取的做法吗? 2) 如果是这样,如何做到最好?

到目前为止,我已经尝试了以下方法:

project_dependencies.py 包含

def get_dependencies():
    import numpy as np

if __name__ == "__main__":
    get_dependencies() 

然后model.py 可能包含

from project_dependencies import get_dependencies

get_dependencies()

def model():
    return np.random.normal(1)

if __name__ == "__main__":
    model()

但这似乎不起作用。一个好的、长期的解决方案是什么?谢谢!

【问题讨论】:

    标签: python python-3.x import python-import


    【解决方案1】:

    一般建议是将所需模块导入您需要的模块/文件中。这有时需要一些额外的输入,但会使每个文件/模块更加独立。

    另一种(但不太推荐)方法是导入包的 __init__.py 文件中的所有依赖项(几乎没有其他任何东西),然后在其他包模块中进行相对导入,例如 from . import *
    虽然经常,__init__.py 倾向于反过来使用:它(相对)导入包模块中 __all__ 定义的所有内容。


    基本上,看看其他一些知名的大型项目,看看他们做了什么。 Django、requests、NumPy 等。你可能会发现它们在每个模块中单独导入外部依赖项,并且仅对内部依赖项(类、函数等)使用相对导入。也就是说,他们使用第一个选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      相关资源
      最近更新 更多