当前位置:首页>python>Python 虚拟环境入门:5 分钟搞定依赖隔离

Python 虚拟环境入门:5 分钟搞定依赖隔离

  • 2026-10-11 06:32:20
Python 虚拟环境入门:5 分钟搞定依赖隔离
上周有个刚学 Python 的朋友找我,说代码在自己电脑上跑得好好的,发给同事就报错。

我让他把代码发过来一看,第一行就是 import pandas,版本还是 1.3.0。但他同事电脑上装的是 2.0,API 完全变了,一行代码都跑不通。

这种问题太常见了,根源就一个:所有项目共用同一个 Python 环境,依赖版本迟早冲突。

你装了项目 A 需要 pandas 1.3,又装了项目 B 需要 pandas 2.0,Python 只能有一个 pandas,怎么办?

虚拟环境是什么

一句话:给每个项目创建一个独立的 Python 环境,互不干扰。

它本质上就是一个文件夹,里面有:

  • 一份 Python 解释器的副本(或符号链接)

  • 一个独立的 Scripts 或 bin 目录(放 pip 等工具)

  • 激活后会修改你的 PATH,让你优先用这个隔离环境里的 Python 和 pip

你可以把它理解成给每个项目开了一个沙盒,装什么库都不影响别人。

怎么用

Python 自带 venv 模块,不用装任何东西。

# 创建虚拟环境(在项目根目录执行)python -m venv venv# 激活(Windows)venv\Scripts\activate# 激活(Mac/Linux)source venv/bin/activate

激活后,命令行前面会出现 (venv) 标识。

这时候你用 pip 装的任何东西,都只装在这个虚拟环境里,不会污染系统 Python。

# 激活后正常装包pip install pandas==2.0pip install requests# 冻结依赖(生成 requirements.txt)pip freeze > requirements.txt

别人拿到你的代码后,只需要:

python -m venv venvsource venv/bin/activate  # Windows 用 venv\Scripts\activatepip install -r requirements.txt

一键复现你的环境,版本完全一致。

设计思想

虚拟环境的核心就两个字:隔离。

Python 官方在 3.3 把 venv 放进标准库,就是承认了一个事实:全局装包是灾难。

不同项目对同一个库有不同版本需求,全局环境根本管不过来。

venv 的设计哲学是够用就行。

它不管理 Python 版本(那是 pyenv 的事),不处理依赖冲突解析(那是 poetry 的事),只做一件事:给你一个干净的隔离环境。

对于大部分项目,这就够了。

你不需要一上来就装 poetry 或 conda,先把 venv 用熟。

常见问题

激活了虚拟环境,pip install 还是装到全局?

检查一下你是不是没激活,激活后用 which pip(Mac/Linux)或 where pip(Windows)确认路径指向的是 venv 目录。

venv 文件夹要不要提交到Git?

不要。

在 .gitignore 里加一行 venv/。

虚拟环境很大,而且每台电脑的系统不同,提交上去别人也用不了,只需要提交 requirements.txt 就行。

Mac/Linux 和 Windows激活命令不一样?

对。

Mac/Linux 是 source venv/bin/activate

Windows 是 venv\Scripts\activate。

deactivate 命令都一样,直接输入 deactivate 就退出虚拟环境。

每次装了新包都要重新 freeze 吗?

是的。

requirements.txt 是你手动导出的快照,不会自动更新。

每次 pip install 新东西后,跑一遍 pip freeze > requirements.txt 保持同步。

下一篇预告

依赖管理不只是 freeze 一下就完了。

pip freeze 导出的列表有一大堆你根本用不着的间接依赖,版本锁定太死也不好维护。下一篇聊聊依赖管理的正确姿势,以及 poetry 是怎么解决这些问题的。


我是鲁叶的Python,10年互联网古法程序员。 

Python/ML/DL/大模型都折腾过,坑也踩了不少。 

关注我,持续输出实用干货。

最新文章

随机文章