Python3 依赖管理的工具与规范
Python3 依赖管理的工具与规范
🎯 学习目标
掌握 Python 项目中依赖管理的核心工具和最佳实践,包括 requirements.txt
、pip
、venv
、poetry
、pipenv
等主流工具。理解如何在不同开发环境中隔离依赖、版本控制、打包部署,并遵循行业标准规范,提升项目的可维护性、可移植性和协作效率。
🔑 核心重点
分类 | 内容 |
---|---|
基础依赖管理 | 使用 pip 安装包,requirements.txt 记录依赖 |
虚拟环境 | 使用 venv 创建独立环境,避免全局污染 |
高级依赖管理 | 使用 poetry 或 pipenv 实现依赖锁定、版本管理、自动环境创建 |
包发布 | 使用 setuptools 和 wheel 构建并发布到 PyPI |
实际应用场景 | 开发、测试、生产环境分离;CI/CD 流程中的依赖安装 |
📚 详细讲解
一、什么是依赖?
Python 项目通常依赖于第三方库(如 requests
, pandas
, flask
等),这些库又可能依赖其他库,形成一个“依赖树”。
✅ 依赖管理的目标是:
- 明确记录所有依赖项及其版本
- 在不同环境中保持一致性
- 避免冲突和安全漏洞
- 支持团队协作与自动化部署
二、基础依赖管理:pip
+ requirements.txt
✅ 安装依赖
pip install requests
✅ 导出依赖
pip freeze > requirements.txt
✅ 安装指定依赖文件
pip install -r requirements.txt
📌 示例 requirements.txt
内容:
requests==2.31.0
flask==3.0.0
numpy>=1.24.0
三、虚拟环境:venv
使用虚拟环境可以为每个项目创建独立的 Python 运行环境,防止依赖冲突。
✅ 创建虚拟环境
python -m venv venv
✅ 激活虚拟环境(Windows)
venv\Scripts\activate
📌 激活后,命令行前缀会出现 (venv)
表示当前处于虚拟环境。
四、高级依赖管理工具:poetry
和 pipenv
✅ poetry
:现代 Python 项目管理工具
安装 poetry(Windows 推荐方式):
(Invoke-WebRequest -Uri https://install.python-poetry.org -OutFile py-install.py)
python py-install.py
初始化项目
poetry new myproject
cd myproject
添加依赖
poetry add requests flask
安装依赖
poetry install
📌 自动生成:
pyproject.toml
:定义项目元信息和依赖poetry.lock
:精确锁定依赖版本,确保一致性
✅ pipenv
:集成虚拟环境与依赖管理
安装 pipenv
pip install --user pipenv
创建虚拟环境并安装依赖
pipenv install requests flask
📌 自动生成:
Pipfile
:项目依赖配置Pipfile.lock
:精确依赖版本锁
五、包发布流程:从本地开发到 PyPI
✅ 步骤概览:
- 准备项目结构
- 编写
setup.py
或pyproject.toml
- 构建 wheel 包
- 发布到 PyPI
✅ 示例:使用 setuptools
发布包
my_package/
├── my_package/
│ └── __init__.py
├── setup.py
setup.py
示例:
from setuptools import setup, find_packages
setup(
name="my_package",
version="0.1",
packages=find_packages(),
install_requires=[
'requests',
],
)
构建包
python setup.py sdist bdist_wheel
安装 twine
并上传到 PyPI
pip install twine
twine upload dist/*
📌 注意:首次上传需注册账号并使用 API token。
⚠️ 注意事项
- 不要在全局环境中安装太多包,应使用虚拟环境
- 依赖版本应尽量精确(如
requests==2.31.0
) - 避免直接修改
pip
安装路径或系统路径 requirements.txt
不适合复杂项目,推荐使用poetry
或pipenv
- CI/CD 中建议使用
poetry lock
或pipenv lock
来保证构建一致性
🧪 实际案例分析
📌 场景:搭建一个 Flask Web 应用并部署到服务器
项目目录结构:
my_flask_app/
├── app/
│ ├── __init__.py
│ └── routes.py
├── venv/
├── requirements.txt
└── run.py
1. 创建虚拟环境并安装依赖
python -m venv venv
venv\Scripts\activate
pip install flask flask-sqlalchemy
pip freeze > requirements.txt
2. 编写代码(简化版)
# run.py
from app import app
if __name__ == "__main__":
app.run(debug=True)
3. 部署时恢复依赖
pip install -r requirements.txt
python run.py
📌 进阶建议:使用 poetry
替代手动操作,更易维护。
🧩 拓展练习(动手实践)
- 创建一个新项目,使用
venv
和requirements.txt
管理依赖。 - 使用
poetry
初始化项目并添加多个依赖项,尝试导出lock
文件。 - 尝试使用
pipenv
创建带 dev 依赖的环境(如pytest
)。 - 编写一个简单的 Python 工具包,并使用
setuptools
打包上传到 PyPI。 - 模拟 CI/CD 环境,在 GitHub Actions 中自动安装依赖并运行测试。
📚 推荐阅读
- Python 官方文档 - 包分发
- 《流畅的 Python》第 16 章 - 模块与包
- Poetry 官方文档
- Pipenv 官方文档
- Real Python - Dependency Management in Python
🧭 下一步建议
- 下一章学习内容:《Python3 标准库常用模块详解》
- 掌握
os
,sys
,datetime
,json
,re
,subprocess
,logging
等核心模块 - 学习如何使用标准库进行文件处理、系统交互、日志记录等常见任务
- 结合依赖管理知识,构建完整可发布的 Python 项目
如果你希望我为你提供:
- Python 依赖管理速查表 PDF(含命令+结构图)
- 更多实战项目练习题(如发布自己的 PyPI 包、模拟 CI 环境等)
- Poetry / Pipenv 高级技巧详解(如私有源配置、脚本执行、环境变量管理)
- 视频教学资源推荐(中文讲解)
欢迎随时告诉我 😊