使用单独的 python 函数导入依赖项
Using a seperate python function to import dependencies
真正的简单问题:我正在构建一个标准存储库来执行一些简单的机器学习任务,并且我几乎总是在那些 .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()
但这似乎不起作用。什么是好的、长期的解决方案?谢谢!
一般建议是在您需要的模块/文件中导入所需的模块。这有时需要一些额外的输入,但会使每个 file/module 更加独立。
另一种(但不太推荐)的方法是将所有依赖项导入包的 __init__.py
文件(几乎没有其他任何依赖项),然后在其他包模块中进行相对导入,例如 from . import *
.
尽管通常 __init__.py
倾向于以相反的方式使用:它(相对)导入包模块中由 __all__
定义的所有内容。
基本上,看看其他一些知名的更大的项目,看看他们做了什么。 Django、requests、NumPy 等。您可能会发现,它们压倒性地在每个模块中单独导入外部依赖项,并且仅针对内部依赖项(类、函数等)使用相对导入。也就是说,他们使用第一个选项。
真正的简单问题:我正在构建一个标准存储库来执行一些简单的机器学习任务,并且我几乎总是在那些 .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()
但这似乎不起作用。什么是好的、长期的解决方案?谢谢!
一般建议是在您需要的模块/文件中导入所需的模块。这有时需要一些额外的输入,但会使每个 file/module 更加独立。
另一种(但不太推荐)的方法是将所有依赖项导入包的 __init__.py
文件(几乎没有其他任何依赖项),然后在其他包模块中进行相对导入,例如 from . import *
.
尽管通常 __init__.py
倾向于以相反的方式使用:它(相对)导入包模块中由 __all__
定义的所有内容。
基本上,看看其他一些知名的更大的项目,看看他们做了什么。 Django、requests、NumPy 等。您可能会发现,它们压倒性地在每个模块中单独导入外部依赖项,并且仅针对内部依赖项(类、函数等)使用相对导入。也就是说,他们使用第一个选项。