pip 包管理与虚拟环境 venv 使用指南

2026-10-24

标签Pythonpip虚拟环境依赖管理

很多刚学 Python 的人习惯直接 pip install 往全局环境里装包,直到某天两个项目需要的库版本冲突、系统 Python 被搞乱才后悔。Python 官方文档给出的标准解法是:每个项目建一个独立的虚拟环境,用 venv 隔离,用 pip 管理包,用 requirements.txt 记录依赖。本文按这条主线把流程讲透。

为什么每个项目都要独立环境

不同项目对依赖版本的要求常常相互冲突:项目 A 需要某个库的 1.0 版,项目 B 需要 2.0 版,装进同一个全局环境必然有一个跑不起来。虚拟环境就是为每个项目准备一个独立的"依赖沙箱"——各自的 pip 安装互不影响,删掉环境也不会污染系统。

按 Python 官方文档的说明,虚拟环境是一个目录树,里面安装特定版本的 Python 解释器和一系列包。只要遵循"一项目一环境",大多数依赖问题都不会再发生。

创建虚拟环境:python -m venv

在项目目录下打开终端,执行(Windows 与 macOS/Linux 通用):

python -m venv .venv

.venv 是虚拟环境的目录名,也可以换成 venv 等任意名字。官方文档推荐用 .venv:以点开头的目录在终端里默认隐藏,看起来更整洁,也不会和 .env 环境变量文件混淆。

创建成功后,项目目录里会出现一个 .venv 文件夹,里面装有独立的 Python 解释器、pip 和 site-packages 包目录。

激活与退出虚拟环境

Windows 激活命令(在 cmd 或 PowerShell 中):

.venv\Scripts\activate

macOS 或 Linux 激活命令:

source .venv/bin/activate

激活成功的标志是命令行提示符前面出现 (.venv),此后 python 和 pip 命令都指向虚拟环境里的解释器。退出环境执行:

deactivate

Windows 的 Git Bash 环境也可以直接用 source .venv/Scripts/activate 激活,提示符同样会出现环境名。

用 pip 安装与管理包

环境激活后,用 python -m pip 形式执行命令最稳妥(避免误用全局 pip)。安装最新版包:

python -m pip install requests

安装指定版本(精确到主次版本,避免意外升级破坏兼容):

python -m pip install requests==2.31.0

批量安装文件里的全部依赖:

python -m pip install -r requirements.txt

卸载包、升级包的命令也很好记:

python -m pip uninstall requests
python -m pip install --upgrade pip

查看已安装的包列表用 python -m pip list。

导出与复现依赖:requirements.txt

项目依赖要可复现,就得把包清单记录下来。导出当前环境所有依赖:

python -m pip freeze > requirements.txt

这会把包名和精确版本号写进 requirements.txt。换一台电脑或部署到服务器时,克隆代码后执行一条命令就能完全复现环境:

python -m pip install -r requirements.txt

提交代码时,只提交 main.py、requirements.txt 这类源码文件,.venv 目录不要提交(一般会写进 .gitignore)——虚拟环境可以在任何机器上用一条命令重建。

下载慢怎么办:换用国内镜像源

pip install 默认从 Python 官方仓库 PyPI 下载,在国内网络环境下有时很慢甚至超时。临时指定镜像源安装:

python -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

-i 参数后面的地址就是镜像源,清华 TUNA 等高校镜像站会定期同步 PyPI 内容,通常可以正常使用;具体可用地址以各镜像站官网当前页面公布为准。想一劳永逸,可以写入 pip 配置文件:

python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

设置后后续安装默认走镜像源,不用每次加 -i。需要说明的是:镜像源是第三方同步服务,个别冷门包或新发布的版本可能存在同步延迟,遇到「找不到版本」时改回官方源 https://pypi.org/simple 重试即可。

什么时候用 requirements 什么时候用全局安装

一个项目对应一个虚拟环境、一份 requirements.txt,这是最标准的做法。只有少量一次性试验脚本、确定不会产生冲突的场景,才考虑直接装在全局。

如果不想手动管理,也可以选用 pipenv、poetry 等更高级的工具,它们把环境与依赖清单整合得更自动化;但对日常项目来说,venv + pip + requirements.txt 三个官方组件已经足够,且不用额外安装任何东西。

常见问题排查

激活后 pip 还是装到了全局?检查提示符前是否有 (.venv),没出现说明激活失败,重新执行激活命令。

找不到 requirements.txt 里某个包的旧版本?该版本可能已从 PyPI 下架,把版本要求放宽(如去掉 == 改为 >=)再试。

项目里有多个 Python 版本(如 3.11 和 3.12)?用具体的 python3.12 -m venv .venv 指定版本创建环境,每个环境绑定对应解释器。

Windows 上激活被安全策略拦截(提示"禁止运行脚本")?在 PowerShell 里执行 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 后重试即可,这是 Python 官方在 Windows 环境下的标准处理办法。

环境被改乱了想从头来?直接删除 .venv 目录重新创建,比逐个卸载包快得多,也最干净——这正是虚拟环境"随时重建"的价值所在。

装完做这几件确认

  • [ ] 命令行提示符出现 (.venv) 前缀,确认环境已激活
  • [ ] python -m pip list 能看到刚安装的包
  • [ ] 项目目录下存在 requirements.txt 且内容非空
  • [ ] 在另一台电脑执行 pip install -r requirements.txt 能成功复现环境