Python 虚拟环境与 pip 依赖管理入门
刚学 Python 的新手常会遇到一个尴尬场面:跟着教程装了一个库,版本冲突报错;换个项目又发现依赖互相打架。根源往往不是代码写错了,而是所有项目共用同一套全局 Python 环境。今天聊聊虚拟环境和 pip 依赖管理这套最基础也最实用的组合。
为什么需要虚拟环境
Python 的包是装在解释器目录下的 site-packages 里的。如果 A 项目需要 requests 2.28,B 项目需要 requests 2.31,全局只装一份,两个项目总有一个要迁就。虚拟环境就是给每个项目单独开一个“小房间”:解释器、已装的包、启动脚本都独立,项目之间互不干扰。删掉环境文件夹,项目依赖就清干净了,不会影响系统和其他项目。
创建与激活
Python 3.3 以后自带 venv 模块,不用额外安装。进入项目目录后执行:python -m venv .venv。这会在当前目录生成一个 .venv 文件夹。激活方式分系统:Windows 上是 .venv\Scripts\activate,macOS 和 Linux 上是 source .venv/bin/activate。激活成功后,终端提示符前面会出现 (.venv) 字样,表示当前命令都在这个环境里生效。退出用 deactivate。
一个习惯:把 .venv 写进 .gitignore,不要提交到版本库。环境可以随时重建,真正要进仓库的是依赖清单。
pip 的基本操作
激活环境后,pip install 装的包只进当前环境。几个常用命令值得记下来:pip install requests 是安装最新版;pip install requests==2.31.0 是安装指定版本;pip list 查看当前环境已装的包;pip uninstall requests 是卸载;pip install -r requirements.txt 是按清单批量安装。
装包慢的时候可以换国内镜像源,例如 pip install -i pypi.tuna.tsinghua.edu.cn/simple requests。临时用一次加 -i 参数即可,长期使用可以在 pip 配置文件里把 index-url 写死。
用 requirements.txt 锁定依赖
项目交付或者换电脑时,别人怎么复现你的环境?靠 requirements.txt。生成它很简单:pip freeze > requirements.txt。这条命令会把当前环境所有包及精确版本号写进文件。拿到项目的人只需新建虚拟环境,再执行 pip install -r requirements.txt,就能得到一套一致的依赖。注意 pip freeze 会列出所有包,包括间接依赖,文件可能比较长,这是正常的。
更好的做法是把 requirements.txt 分成两类:开发依赖和运行依赖。例如测试工具 pytest 只在开发时需要,可以单独放 requirements-dev.txt,主清单保持干净。
几个容易踩的坑
第一,忘记激活环境就 pip install,包会装进全局环境,排查半天发现项目里 import 不到。养成习惯:每次打开终端先看提示符有没有 (.venv)。
第二,多个 Python 版本共存时 python 命令指向不明。用 python --version 和 which python(Windows 用 where python)确认当前解释器路径,必要时用 python3.10 -m venv .venv 这样带版本号的方式创建。
第三,升级 pip 本身。新建环境里的 pip 版本可能较旧,遇到安装报错先试试 python -m pip install --upgrade pip,很多奇怪的安装失败就此解决。
第四,不要在系统自带的 Python 上直接装包。macOS 和部分 Linux 发行版的系统 Python 供系统工具使用,乱装包可能影响系统组件,虚拟环境正是用来隔离这种风险的。
小结
虚拟环境加 requirements.txt 是 Python 开发的标配流程:一个项目一个环境,依赖清单进版本库,环境本身不提交。花十分钟养成这个习惯,后面能省下大量排查版本冲突的时间。等这套流程顺手了,再去了解 Poetry、uv 这类更现代的依赖管理工具,会更容易理解它们解决的是什么问题。
- 点赞
- 收藏
- 关注作者
评论(0)