# DepChecker
一个轻量级的Python库,用于快速检测和安装项目所需的依赖包。
## 功能特性
- ✅ **依赖检测** - 检查包是否安装及版本是否符合要求
- 🔧 **自动安装** - 一键安装所有缺失或需要更新的包
- 📊 **详细报告** - 清晰的检查结果和状态显示
- 🚀 **简单易用** - 提供类接口和便捷函数两种使用方式
- 🔄 **版本控制** - 支持最低版本要求检查
## 安装
```bash
pip install depchecker
```
## 快速开始
### 方式一:使用便捷函数
```python
from depchecker import quick_check
# 定义项目依赖
REQUIREMENTS = {
"requests": "2.31.0",
"numpy": "1.21.0",
"pandas": "1.3.0",
"matplotlib": "3.4.0"
}
# 快速检查并自动安装
ready = quick_check(REQUIREMENTS, auto_install=True, verbose=True)
if ready:
print("✅ 环境准备就绪!")
else:
print("❌ 环境准备失败")
```
### 方式二:使用类接口
```python
from depchecker import DependencyChecker
# 创建检测器实例
checker = DependencyChecker({
"flask": "2.0.0",
"sqlalchemy": "1.4.0",
"redis": "4.0.0"
})
# 检查所有依赖
results = checker.check_all()
print("检查结果:", results)
# 安装缺失的包
if not checker.is_ready():
checker.install_all(verbose=True)
```
## API 参考
### `DependencyChecker` 类
#### `__init__(requirements: Dict[str, str])`
初始化依赖检测器。
- `requirements`: 依赖包字典,格式为 `{包名: 最低版本}`
#### `check_package(package_name: str, min_version: Optional[str] = None) -> Tuple[bool, str, str]`
检查单个包的安装状态。
- 返回: `(是否安装, 当前版本, 状态信息)`
#### `check_all() -> Dict[str, Tuple[bool, str, str]]`
检查所有要求的依赖包。
- 返回: 字典格式的检查结果 `{包名: (是否安装, 版本, 状态)}`
#### `install_all(verbose: bool = False) -> Dict[str, bool]`
安装所有缺失和需要更新的包。
- 返回: 安装结果字典 `{包名: 是否成功}`
#### `is_ready() -> bool`
检查所有依赖是否都已满足。
### `quick_check(requirements: Dict[str, str], auto_install: bool = False, verbose: bool = False) -> bool`
快速检查依赖的便捷函数。
- `auto_install`: 是否自动安装缺失的包
- `verbose`: 是否显示详细输出
- 返回: 所有依赖是否就绪
## 示例输出
```
📦 依赖库检查:
--------------------------------------------------
requests 2.28.0 ✓ (需要: 2.31.0+)
numpy 1.20.0 ✗ 需要版本 >= 1.21.0 (需要: 1.21.0+)
pandas 未安装 ✗ (需要: 1.3.0+)
--------------------------------------------------
🔧 自动安装缺失的库...
安装 numpy>=1.21.0...
✓ numpy 安装成功
安装 pandas>=1.3.0...
✓ pandas 安装成功
🎉 所有依赖库安装完成!
✅ 环境准备就绪,可以开始开发!
```
## 贡献
欢迎提交 Issue 和 Pull Request!
## 许可证
MIT License
## 支持版本
- Python 3.7+
- 支持 Windows、macOS、Linux
Raw data
{
"_id": null,
"home_page": null,
"name": "yhd-depchecker",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "dependency, checker, installer, package management, environment",
"author": "YHD gamepaly\uff08\u989c\u534e\u8776\u6e38\u620f\u793e\uff09",
"author_email": "f17376088816@163.com",
"download_url": "https://files.pythonhosted.org/packages/21/95/0554b54cf5eef9b3a76bf3642f774a930ed67d6f619ba1b5e55913f8388d/yhd_depchecker-1.0.0.tar.gz",
"platform": null,
"description": "# DepChecker\r\n\r\n\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684Python\u5e93\uff0c\u7528\u4e8e\u5feb\u901f\u68c0\u6d4b\u548c\u5b89\u88c5\u9879\u76ee\u6240\u9700\u7684\u4f9d\u8d56\u5305\u3002\r\n\r\n## \u529f\u80fd\u7279\u6027\r\n\r\n- \u2705 **\u4f9d\u8d56\u68c0\u6d4b** - \u68c0\u67e5\u5305\u662f\u5426\u5b89\u88c5\u53ca\u7248\u672c\u662f\u5426\u7b26\u5408\u8981\u6c42\r\n- \ud83d\udd27 **\u81ea\u52a8\u5b89\u88c5** - \u4e00\u952e\u5b89\u88c5\u6240\u6709\u7f3a\u5931\u6216\u9700\u8981\u66f4\u65b0\u7684\u5305\r\n- \ud83d\udcca **\u8be6\u7ec6\u62a5\u544a** - \u6e05\u6670\u7684\u68c0\u67e5\u7ed3\u679c\u548c\u72b6\u6001\u663e\u793a\r\n- \ud83d\ude80 **\u7b80\u5355\u6613\u7528** - \u63d0\u4f9b\u7c7b\u63a5\u53e3\u548c\u4fbf\u6377\u51fd\u6570\u4e24\u79cd\u4f7f\u7528\u65b9\u5f0f\r\n- \ud83d\udd04 **\u7248\u672c\u63a7\u5236** - \u652f\u6301\u6700\u4f4e\u7248\u672c\u8981\u6c42\u68c0\u67e5\r\n\r\n## \u5b89\u88c5\r\n\r\n```bash\r\npip install depchecker\r\n```\r\n\r\n## \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u65b9\u5f0f\u4e00\uff1a\u4f7f\u7528\u4fbf\u6377\u51fd\u6570\r\n\r\n```python\r\nfrom depchecker import quick_check\r\n\r\n# \u5b9a\u4e49\u9879\u76ee\u4f9d\u8d56\r\nREQUIREMENTS = {\r\n \"requests\": \"2.31.0\",\r\n \"numpy\": \"1.21.0\", \r\n \"pandas\": \"1.3.0\",\r\n \"matplotlib\": \"3.4.0\"\r\n}\r\n\r\n# \u5feb\u901f\u68c0\u67e5\u5e76\u81ea\u52a8\u5b89\u88c5\r\nready = quick_check(REQUIREMENTS, auto_install=True, verbose=True)\r\n\r\nif ready:\r\n print(\"\u2705 \u73af\u5883\u51c6\u5907\u5c31\u7eea\uff01\")\r\nelse:\r\n print(\"\u274c \u73af\u5883\u51c6\u5907\u5931\u8d25\")\r\n```\r\n\r\n### \u65b9\u5f0f\u4e8c\uff1a\u4f7f\u7528\u7c7b\u63a5\u53e3\r\n\r\n```python\r\nfrom depchecker import DependencyChecker\r\n\r\n# \u521b\u5efa\u68c0\u6d4b\u5668\u5b9e\u4f8b\r\nchecker = DependencyChecker({\r\n \"flask\": \"2.0.0\",\r\n \"sqlalchemy\": \"1.4.0\",\r\n \"redis\": \"4.0.0\"\r\n})\r\n\r\n# \u68c0\u67e5\u6240\u6709\u4f9d\u8d56\r\nresults = checker.check_all()\r\nprint(\"\u68c0\u67e5\u7ed3\u679c:\", results)\r\n\r\n# \u5b89\u88c5\u7f3a\u5931\u7684\u5305\r\nif not checker.is_ready():\r\n checker.install_all(verbose=True)\r\n```\r\n\r\n## API \u53c2\u8003\r\n\r\n### `DependencyChecker` \u7c7b\r\n\r\n#### `__init__(requirements: Dict[str, str])`\r\n\u521d\u59cb\u5316\u4f9d\u8d56\u68c0\u6d4b\u5668\u3002\r\n\r\n- `requirements`: \u4f9d\u8d56\u5305\u5b57\u5178\uff0c\u683c\u5f0f\u4e3a `{\u5305\u540d: \u6700\u4f4e\u7248\u672c}`\r\n\r\n#### `check_package(package_name: str, min_version: Optional[str] = None) -> Tuple[bool, str, str]`\r\n\u68c0\u67e5\u5355\u4e2a\u5305\u7684\u5b89\u88c5\u72b6\u6001\u3002\r\n\r\n- \u8fd4\u56de: `(\u662f\u5426\u5b89\u88c5, \u5f53\u524d\u7248\u672c, \u72b6\u6001\u4fe1\u606f)`\r\n\r\n#### `check_all() -> Dict[str, Tuple[bool, str, str]]`\r\n\u68c0\u67e5\u6240\u6709\u8981\u6c42\u7684\u4f9d\u8d56\u5305\u3002\r\n\r\n- \u8fd4\u56de: \u5b57\u5178\u683c\u5f0f\u7684\u68c0\u67e5\u7ed3\u679c `{\u5305\u540d: (\u662f\u5426\u5b89\u88c5, \u7248\u672c, \u72b6\u6001)}`\r\n\r\n#### `install_all(verbose: bool = False) -> Dict[str, bool]`\r\n\u5b89\u88c5\u6240\u6709\u7f3a\u5931\u548c\u9700\u8981\u66f4\u65b0\u7684\u5305\u3002\r\n\r\n- \u8fd4\u56de: \u5b89\u88c5\u7ed3\u679c\u5b57\u5178 `{\u5305\u540d: \u662f\u5426\u6210\u529f}`\r\n\r\n#### `is_ready() -> bool`\r\n\u68c0\u67e5\u6240\u6709\u4f9d\u8d56\u662f\u5426\u90fd\u5df2\u6ee1\u8db3\u3002\r\n\r\n### `quick_check(requirements: Dict[str, str], auto_install: bool = False, verbose: bool = False) -> bool`\r\n\u5feb\u901f\u68c0\u67e5\u4f9d\u8d56\u7684\u4fbf\u6377\u51fd\u6570\u3002\r\n\r\n- `auto_install`: \u662f\u5426\u81ea\u52a8\u5b89\u88c5\u7f3a\u5931\u7684\u5305\r\n- `verbose`: \u662f\u5426\u663e\u793a\u8be6\u7ec6\u8f93\u51fa\r\n- \u8fd4\u56de: \u6240\u6709\u4f9d\u8d56\u662f\u5426\u5c31\u7eea\r\n\r\n## \u793a\u4f8b\u8f93\u51fa\r\n\r\n```\r\n\ud83d\udce6 \u4f9d\u8d56\u5e93\u68c0\u67e5:\r\n--------------------------------------------------\r\nrequests 2.28.0 \u2713 (\u9700\u8981: 2.31.0+)\r\nnumpy 1.20.0 \u2717 \u9700\u8981\u7248\u672c >= 1.21.0 (\u9700\u8981: 1.21.0+)\r\npandas \u672a\u5b89\u88c5 \u2717 (\u9700\u8981: 1.3.0+)\r\n--------------------------------------------------\r\n\ud83d\udd27 \u81ea\u52a8\u5b89\u88c5\u7f3a\u5931\u7684\u5e93...\r\n\u5b89\u88c5 numpy>=1.21.0...\r\n\u2713 numpy \u5b89\u88c5\u6210\u529f\r\n\u5b89\u88c5 pandas>=1.3.0...\r\n\u2713 pandas \u5b89\u88c5\u6210\u529f\r\n\ud83c\udf89 \u6240\u6709\u4f9d\u8d56\u5e93\u5b89\u88c5\u5b8c\u6210\uff01\r\n\u2705 \u73af\u5883\u51c6\u5907\u5c31\u7eea\uff0c\u53ef\u4ee5\u5f00\u59cb\u5f00\u53d1\uff01\r\n```\r\n\r\n## \u8d21\u732e\r\n\r\n\u6b22\u8fce\u63d0\u4ea4 Issue \u548c Pull Request\uff01\r\n\r\n## \u8bb8\u53ef\u8bc1\r\n\r\nMIT License\r\n\r\n## \u652f\u6301\u7248\u672c\r\n\r\n- Python 3.7+\r\n- \u652f\u6301 Windows\u3001macOS\u3001Linux\r\n",
"bugtrack_url": null,
"license": null,
"summary": "\u7528\u4e8e\u68c0\u6d4b\u5f53\u524d\u4ee3\u7801\u73af\u5883\u662f\u5426\u62e5\u6709\u5f00\u53d1\u8005\u6240\u8981\u6c42\u7684\u5e93\uff0c\u5e76\u5b89\u88c5\u3002\u53ef\u7528\u4e8e\u76f4\u63a5\u5206\u53d1\u4ee3\u7801\u5feb\u6377\u5b89\u88c5",
"version": "1.0.0",
"project_urls": null,
"split_keywords": [
"dependency",
" checker",
" installer",
" package management",
" environment"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c38a2ed137d6b4dbf0bb99385e26bb63846a9e04a75384fb1064c78f638dbbd4",
"md5": "816c717ba301fce81e1841bca750e4de",
"sha256": "22f2a706d5bb458e62e78aa0a1bb558861df0df5832ea9d846c3f26fb7c6c88b"
},
"downloads": -1,
"filename": "yhd_depchecker-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "816c717ba301fce81e1841bca750e4de",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 2908,
"upload_time": "2025-09-06T12:32:16",
"upload_time_iso_8601": "2025-09-06T12:32:16.475686Z",
"url": "https://files.pythonhosted.org/packages/c3/8a/2ed137d6b4dbf0bb99385e26bb63846a9e04a75384fb1064c78f638dbbd4/yhd_depchecker-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "21950554b54cf5eef9b3a76bf3642f774a930ed67d6f619ba1b5e55913f8388d",
"md5": "70b5f459298d0c416ccdbd39934d45b4",
"sha256": "d6e57a0d43c7ce2dc070b3e0bb6e035238dc0b8398ce60d3db070c96ab113d0b"
},
"downloads": -1,
"filename": "yhd_depchecker-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "70b5f459298d0c416ccdbd39934d45b4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 4148,
"upload_time": "2025-09-06T12:32:18",
"upload_time_iso_8601": "2025-09-06T12:32:18.062392Z",
"url": "https://files.pythonhosted.org/packages/21/95/0554b54cf5eef9b3a76bf3642f774a930ed67d6f619ba1b5e55913f8388d/yhd_depchecker-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-06 12:32:18",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "yhd-depchecker"
}