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 玩法