Linux 下 Python 环境管理:venv 与 pip 的实用指南
Linux 下 Python 环境管理:venv 与 pip 的实用指南
刚开始写 Python 时,很多人都是直接往系统 Python 里装包:项目一多,依赖版本冲突、升级一个库拖垮另一个项目,调试时间比写代码还长。解决办法并不复杂:每个项目一个独立的虚拟环境,再用 pip 固定依赖。本文用最短的路径讲清楚 venv + pip 的日常用法。
为什么需要虚拟环境
系统自带的 Python 是给操作系统用的,装全局包既容易污染系统,也会在不同项目间产生冲突。比如 A 项目要用 requests 2.28,B 项目的某个库要求 requests>=2.31,共用一个环境只能二选一。venv 给每个项目一份独立的解释器副本和 site-packages,依赖互不干扰;删除环境也只需删掉一个文件夹。
准备工作:确认版本
python3 --version
python3 -m pip --version
如果提示找不到 pip,Ubuntu/Debian 可以 sudo apt install python3-pip,或用 python3 -m ensurepip --upgrade 自举安装;macOS 用 Homebrew 安装的 Python 自带 pip。
创建与激活虚拟环境
cd ~/projects/myapp
python3 -m venv .venv
source .venv/bin/activate
激活后命令行提示符前面会出现 (.venv),此时 python、pip 都指向环境内的可执行文件。用完退出执行 deactivate。Windows 上激活命令是 .venv\Scripts\activate。
小提示:把 .venv 写进 .gitignore,不要把虚拟环境提交到仓库里。
pip 的日常用法
pip install requests # 安装
pip install "requests==2.32.3" # 固定版本
pip install -r requirements.txt # 按清单复现环境
pip freeze > requirements.txt # 导出当前依赖
python -m pip install --upgrade pip # 升级 pip 自身
pip list --outdated # 查看可升级的包
养成习惯:每次装完依赖就执行一次 pip freeze > requirements.txt,把依赖清单和代码一起提交;别人拿到代码,一条命令就能复现相同环境。
换镜像源,让安装更快
国内直接访问 PyPI 有时会很慢或超时,可以换用国内镜像源,一次配置长期生效:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
也可以临时指定:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests。
多项目、多版本的管理技巧
- 每个项目一个 venv,统一放在项目目录下的
.venv,一眼能看出归属。 - 需要指定解释器版本时,直接用对应版本创建:
python3.11 -m venv .venv。 - 升级虚拟环境本身:
python -m venv --upgrade .venv。 - 想彻底清理一个环境:先
deactivate,再rm -rf .venv。 - 管理多个 Python 版本,推荐用 pyenv 安装并切换解释器,再用 venv 做项目隔离,两者分工明确。
常见问题
- 激活后 pip 还是系统的?先执行
which python和which pip,确认路径在.venv/bin下;如果不是,可能是激活命令没生效,检查 shell 类型(bash/zsh 对应不同的激活脚本)。 - 安装包时超时怎么办?换镜像源,或加
--default-timeout=100 --retries 5参数。 - 依赖装上了,运行却报找不到模块?确认运行代码用的就是环境里的 Python(IDE 里也要把解释器选成
.venv/bin/python)。 - Docker 里还需要 venv 吗?容器本身已经是隔离层,本地开发仍建议用 venv,保证“本地开发、容器部署用同一份 requirements.txt”,行为一致。
小结
venv + pip 是 Python 开发最轻量也最通用的环境组合:一个命令创建环境、一份 requirements.txt 锁定依赖、一个镜像源解决下载慢。把“每个项目一个环境、依赖写进清单”变成习惯,大部分“在我机器上能跑”的问题会直接消失。
- 点赞
- 收藏
- 关注作者
评论(0)