python项目依赖管理需通过虚拟环境隔离、requirements.txt或pyproject.toml声明依赖,并定期更新与安全扫描。使用venv创建环境,pip freeze生成精确依赖,pyproject.toml统一配置,safety检查漏洞。

Python 项目依赖管理的核心是隔离环境 + 明确声明 + 可复现安装,而不是直接 pip install 到全局 Python 中。
用虚拟环境隔离项目依赖
每个项目应有独立的 Python 运行环境,避免不同项目间包版本冲突。
- 推荐使用 venv(Python 3.3+ 内置):
python -m venv .venv创建环境,source .venv/bin/activate(Linux/macOS)或.venv\Scripts\activate(Windows)激活 - 激活后所有
pip install都只影响当前项目,which python或where python可确认路径是否指向.venv - 不建议用 conda 替代 venv 做常规 Python 项目管理——除非你重度依赖科学计算生态且需跨语言包
用 requirements.txt 精确记录依赖
不是靠记忆或手动记版本,而是让 pip 自动生成可复现的依赖快照。
- 开发阶段先安装所需包:
pip install requests flask pytest - 再导出完整、带版本号的依赖列表:
pip freeze > requirements.txt - 部署或协作时,他人只需:
pip install -r requirements.txt,即可还原完全一致的环境 - 若只需顶层依赖(不包含子依赖),可用
pipreqs .(需先pip install pipreqs),它根据代码 import 自动分析并生成精简版requirements.txt
用 pyproject.toml 统一配置现代项目
从 Python 3.8 起,PEP 518 推荐用 pyproject.toml 替代 setup.py 和 requirements.txt 的混合管理。
立即学习“Python免费学习笔记(深入)”;
- 定义构建系统和依赖(如使用 setuptools 或 hatch):
[build-system]<br> requires = ["setuptools>=45", "wheel", "setuptools_scm[toml]>=6.2"]<br> build-backend = "setuptools.build_meta"
- 声明运行时依赖:
[project]<br> dependencies = [<br> "requests>=2.28.0",<br> "click>=8.0",<br> ]
- 工具链(如测试、格式化)可放在
[project.optional-dependencies]下,按需安装:pip install ".[dev,test]"
定期更新与安全检查不能省
依赖不是写完就扔,需持续维护,尤其防范已知漏洞。
- 检查过期包:
pip list --outdated,升级单个包:pip install -U package_name - 扫描安全风险:
pip install safety,然后运行safety check -r requirements.txt - CI 流程中加入依赖检查步骤,例如 GitHub Actions 中用
pip-audit或safety自动拦截高危版本










