如何离线使用pip检查Python项目的依赖是否已满足?
离线检查pyproject.toml中test可选依赖是否已安装的方案
针对你的需求——离线环境下不发起网络请求,仅检查pyproject.toml中test可选依赖是否全部安装,以下是两种可行方案:
方案1:利用pip的模拟安装参数
直接通过pip的--dry-run(模拟安装)和--no-index(禁用远程索引)参数,结合项目的test特性依赖,通过命令返回值判断结果:
# 模拟安装test特性依赖,离线模式下仅检查本地是否已满足 python3 -m pip install --dry-run --no-index .[test] # 根据返回值执行后续逻辑 if [ $? -eq 0 ]; then python3 -m unittest else echo "Test依赖未安装完全,终止测试" fi
--dry-run:仅模拟安装流程,不会实际修改本地环境--no-index:禁止pip访问远程PyPI索引,确保完全离线- 若所有依赖已满足,命令返回
0;若存在缺失或版本不兼容,返回非0
方案2:编写Python脚本直接检查依赖
如果需要更精细的错误提示,或避免pip命令的额外输出,可以写一个简单的Python脚本,利用pkg_resources直接检查依赖:
import sys from pkg_resources import require, DistributionNotFound, VersionConflict try: # 检查项目test特性的所有依赖(包括传递依赖) require("lorem[test]") sys.exit(0) except (DistributionNotFound, VersionConflict) as e: print(f"依赖问题: {e}", file=sys.stderr) sys.exit(1)
然后在shell中调用脚本并判断:
python3 check_test_deps.py if [ $? -eq 0 ]; then python3 -m unittest else echo "Test依赖未满足,终止测试" fi
内容的提问来源于stack exchange,提问作者bignose
相关产品推荐
相关产品推荐

