Python虚拟环境与依赖管理:从入门到好习惯
很多 Python 新手都会遇到这样的问题:项目 A 需要 requests 2.28,项目 B 需要 requests 2.31;或者刚升级了某个库,旧项目就跑不起来了。如果所有项目都装在同一个全局环境里,依赖冲突迟早会找上门。
虚拟环境(Virtual Environment)就是为每个项目创建一个独立的“小房间”:Python 解释器、第三方库、环境变量都互不干扰。项目 A 的房间装什么版本,项目 B 完全不受影响。
一、用 venv 创建第一个虚拟环境
Python 3.3 以上版本自带 venv,无需安装任何第三方工具。
在项目目录下创建名为 .venv 的虚拟环境:
python -m venv .venv
激活(Windows):
.venv\Scripts\activate
激活(Linux / macOS):
source .venv/bin/activate
激活成功后,终端提示符前会多出 (.venv) 字样,表示你已经“走进”了这个独立房间。退出时输入 deactivate 即可。
一个小习惯:把 .venv 目录名加到 .gitignore 里,不要把它提交到版本库。虚拟环境是可再生的,真正要保留的是依赖清单。
二、pip 常用命令速查
在激活的虚拟环境里,pip 安装的包只会进入当前环境:
pip install requests 安装
pip install requests==2.31.0 安装指定版本
pip uninstall requests 卸载
pip list 查看已安装的包
pip show requests 查看某个包的详情
pip install -U requests 升级到最新版
建议配置国内镜像源提速,例如:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
也可以把镜像地址写进 pip 的配置文件(Linux 下是 pip.conf,Windows 下是 pip.ini),一劳永逸。
三、requirements.txt:依赖清单的正确姿势
虚拟环境可以随时重建,但“装了哪些包、什么版本”必须留档,这就是 requirements.txt 的作用:
导出当前环境依赖:
pip freeze > requirements.txt
在新机器或新环境中一键还原:
pip install -r requirements.txt
注意两点:第一,pip freeze 会导出所有包,包括间接依赖,清单会比较长,这是正常的;第二,导出的最好时机是“项目可运行”的时刻,随手提交到版本库。
四、常见坑与好习惯
1. 忘记激活就 pip install:包会装进全局环境,污染系统。安装前先看一眼提示符前面有没有 (.venv)。
2. 一个环境用到老:不同项目混用一个虚拟环境,迟早冲突。建议“一个项目一个环境”。
3. requirements.txt 长期不更新:装了新包就顺手 pip freeze,别等到部署时才发现对不上。
4. 把 .venv 提交到 Git:虚拟环境动辄几百 MB,还跨平台不兼容,只提交 requirements.txt 就够了。
5. 生产环境用固定版本:requests>=2.28 这种宽松写法在开发时省事,部署生产建议锁定具体版本,避免某天上游发版带来意外。
结语
虚拟环境 + pip + requirements.txt,是 Python 开发者最基础也最重要的一套组合拳。养成“进项目先建环境、装包就更新清单”的习惯,依赖冲突会少掉九成。工具不复杂,难的是坚持。下次开新项目时,花一分钟建个虚拟环境,你会感谢今天的自己。
- 点赞
- 收藏
- 关注作者
评论(0)