python - 使用单独的 python 函数导入依赖项

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

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

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

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

到目前为止,我已尝试以下操作:

project_dependency.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()

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

最佳答案

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

另一种(但不太推荐)方法可能是导入包的 __init__.py 文件中的所有依赖项(几乎没有其他内容),然后在其他包模块中进行相对导入,就像来自 的。导入*
尽管经常,__init__.py 倾向于以相反的方式使用:它(相对)导入包模块中 __all__ 定义的所有内容。

<小时/>

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

关于python - 使用单独的 python 函数导入依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48564459/

相关文章:

Python 从 pickle 保存的数据中删除条目

ruby-on-rails - 通过 http 而不是文件系统导入 SASS 部分

python - 在 PyQT5 中创建自定义小部件

python-3.x - python模式验证问题

python-3.x - Kotlin TCP套接字客户端无法正常工作的Python服务器

javascript - 是否可以将一组图像作为数组导入? (创建 react 应用程序项目)

java - 根据平台放置程序图标

python - 如何关闭通过Python中的Popen打开的ssh隧道

javascript - 从 Javascript 确定 Django 用户 ID

python - 如何制作一个简单的 Python 分支,如果找到需求,它会停止?