1.2 Virtual Environments For Software Development:虚拟环境与依赖管理(整理版)
原始笔记:Virtual environment.md 原始教程:1.2 Virtual Environments For Software Development created: 2026-07-25 10:36 整理说明:本版本只围绕原笔记已有的虚拟环境工作流、
pip命令、依赖导出与恢复以及 editable install 进行整理和补充。
内容简要概括
Python 虚拟环境为项目提供相互隔离的解释器和第三方依赖,避免不同项目之间发生版本冲突。使用 pip 可以安装、升级、查看和卸载包,并通过 requirements.txt 导出与复现依赖。开发本地项目时,可使用 editable install 让源码修改立即反映到环境中。
venv、pip、虚拟环境、依赖管理、requirements.txt、editable install、pyproject.toml、版本约束、环境复现、deactivate
目录
1. 创建和使用虚拟环境
为每个项目创建独立虚拟环境,可以让项目使用自己的 Python 和第三方包版本。下面的命令在当前目录创建名为 venv 的环境:
python3 -m venv venv
-m venv 表示让当前 python3 解释器运行标准库中的 venv 模块。创建后,在 macOS 或 Linux 中激活环境:
source venv/bin/activate
完成工作后退出环境:
deactivate
2. pip 常用命令
使用 python3 -m pip 可以明确调用当前 Python 环境对应的 pip。
安装指定版本
python3 -m pip install numpy==1.21.1
== 要求安装指定版本。
指定最低版本
python3 -m pip install "numpy>=1.20"
>= 表示允许安装 1.20 或更高版本。引号可以避免 shell 把 > 解释为重定向符号。
升级包
python3 -m pip install --upgrade numpy
--upgrade 将已安装的包升级到满足约束的较新版本。
查看包信息
python3 -m pip show numpy
show 显示包的版本、安装位置和依赖关系等信息。
查看已安装包
python3 -m pip list
list 列出当前环境中已安装的包及其版本。
卸载包
python3 -m pip uninstall numpy
uninstall 从当前环境中卸载指定包。
3. 导出和复现依赖环境
导出依赖
python3 -m pip freeze --exclude-editable > requirements.txt
freeze:以可安装的版本约束格式输出当前依赖;--exclude-editable:不把 editable install 的本地项目写入依赖列表;> requirements.txt:把输出保存到requirements.txt。
根据依赖文件恢复环境
团队成员克隆项目后,可以执行:
python3 -m pip install -r requirements.txt -e .
等价于:
python3 -m pip install -r requirements.txt
python3 -m pip install -e .
其中:
-r requirements.txt:读取依赖文件并安装第三方依赖;-e .:以 editable 模式安装当前目录中的项目,.表示当前目录。
4. 安装本地项目
python3 -m pip install --editable .
--editable 与 -e 等价。editable install 让环境直接引用本地源码,因此开发过程中修改源码后通常不需要重复安装。
5. 推荐工作流程
# 1. 创建环境
python3 -m venv venv
# 2. 激活环境
source venv/bin/activate
# 3. 安装依赖
python3 -m pip install numpy matplotlib
# 4. 安装本地项目
python3 -m pip install --editable .
# 5. 导出依赖
python3 -m pip freeze --exclude-editable > requirements.txt
# 6. 运行程序
python3 inflammation-analysis.py data/inflammation-01.csv
# 7. 退出环境
deactivate
这个流程依次完成环境隔离、依赖安装、本地项目安装、依赖记录、程序运行和环境退出,便于其他成员复现相同的开发环境。