快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
创建一个Python依赖管理演示项目,展示多环境依赖管理方案。包含:1) 基础依赖requirements/base.txt;2) 开发依赖requirements/dev.txt;3) 测试依赖requirements/test.txt。实现pip-tools集成,演示从.in文件编译出.txt的过程。配置setup.py支持可选依赖。包含一个GitHub Actions示例,展示CI环境中的依赖安装流程。- 点击'项目生成'按钮,等待项目生成完整后预览效果
今天想和大家分享一个在企业级Python项目中非常实用的PIP依赖管理方案。作为一个经常需要协作开发的后端工程师,我发现依赖管理是团队协作中最容易被忽视但又极其重要的一环。
- 依赖分层管理在实际项目中,我们通常需要区分不同环境的依赖。我的做法是创建requirements目录,里面包含三个基础文件:
- base.txt:存放项目运行必需的核心依赖
- dev.txt:开发环境专用工具(如调试器、代码格式化工具等)
test.txt:测试相关依赖(如pytest、覆盖率工具等)
使用pip-tools工具链为了更精确地控制依赖版本,我推荐使用pip-tools这套工具。它通过.in文件声明顶层依赖,然后生成精确锁定版本的.txt文件。具体流程是:
- 编写requirements.in文件,只写明直接依赖包
- 运行pip-compile命令生成带完整依赖树的requirements.txt
这样可以确保所有环境安装完全一致的依赖版本
setup.py的可选依赖对于需要发布为库的项目,setup.py中可以定义extras_require来声明可选依赖集。比如:
extras_require={ 'dev': ['pytest', 'black'], 'test': ['pytest-cov'], }这样其他项目可以通过pip install package[dev]的方式选择性安装。
- CI/CD集成在GitHub Actions中,我们可以这样配置依赖安装步骤:
jobs: test: steps: - uses: actions/checkout@v2 - run: pip install -r requirements/base.txt - run: pip install -r requirements/test.txt - run: pytest- 私有源配置企业内网环境通常需要配置私有PyPI源。可以在pip.conf中设置:
[global] index-url = http://internal-pypi.example.com/simple trusted-host = internal-pypi.example.com- 依赖冲突解决当遇到依赖冲突时,我的经验是:
- 使用pipdeptree查看完整的依赖树
- 优先升级或降级直接依赖
必要时使用约束文件(requirements/constraints.txt)
虚拟环境管理建议每个项目都使用独立的虚拟环境:
python -m venv .venv source .venv/bin/activate- 依赖安全扫描定期使用safety或dependabot扫描已知漏洞:
pip install safety safety check -r requirements.txt这套方案在我们团队实施后,依赖冲突问题减少了90%以上,新成员上手时间也大幅缩短。特别是pip-tools的版本锁定机制,彻底解决了"在我机器上能跑"的经典问题。
在实际操作中,我发现InsCode(快马)平台特别适合用来验证这类依赖管理方案。它的在线编辑器可以直接运行pip命令,还能一键部署包含完整依赖环境的Web应用,省去了本地配置的麻烦。对于团队协作项目,这种即开即用的体验真的很方便,特别是当需要快速验证不同依赖组合时,不用再担心环境问题。
快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
创建一个Python依赖管理演示项目,展示多环境依赖管理方案。包含:1) 基础依赖requirements/base.txt;2) 开发依赖requirements/dev.txt;3) 测试依赖requirements/test.txt。实现pip-tools集成,演示从.in文件编译出.txt的过程。配置setup.py支持可选依赖。包含一个GitHub Actions示例,展示CI环境中的依赖安装流程。- 点击'项目生成'按钮,等待项目生成完整后预览效果