python通过__init__.py 进行模块依赖包的check

很多时候我们开发模块化项目,或者动态加载功能包的项目,对于依赖我们不希望直接在安装的时候就安装,而是按需使用
的时候进行主动安装(比如langchain 不少模块),解决方法很多,以下说明下基于__init__.py 的处理

一些参考解决方法

  • 在调用模块方法的时候通过显示的import 模块,并通过try 异常处理,给予用户提示需要安装的依赖
  • 在用户导入模块的时候直接给予提示

基于__init__.py 的方法

  • 参考代码结构
├── README.md
├── app.py
└── login
    ├── __init__.py
    ├── llm
    ├── __init__.py
    └── llm.py
    └── openapi
        └── __init__.py
  • login/llm/__init__.py 处理
from importlib.util import find_spec
if not find_spec('ollama'):
    raise ImportError("ollama not found run `pip install ollama` ")

简单说明: 比如我们的代码模块llm 是基于ollama 的,但是用户使用是一个可选的,当用户使用了ollama 模块包装,但是没有安装ollama 包的时候此处基于find_spec 查找依赖,如果没有安装就会告诉用户应该安装包

  • 使用模块
    app.py
from login import llm
  • 效果


如果安装了ollama 之后就不会有上边的异常信息

说明

基于__init__.py同时组织好代码也是一个很不错的check 玩法

参考资料

https://github.com/rongfengliang/python__init__demo

posted on 2024-10-26 00:22  荣锋亮  阅读(14)  评论(0编辑  收藏  举报

导航