pyenv管版本,venv隔依赖
🔥 现在学 Python,你学的不只是编程 —— ChatGPT、DeepSeek、Copilot,这些改变世界的 AI 底层全是 Python;学会它,你才能真正用好 AI、甚至做出 AI。这个系列带你从零开始,38 篇打通 Python 核心。
很多初学者"装 Python"这一关就卡死了:系统自带的 Python 版本太老,装新版又怕搞乱系统;手动在官网下安装包,装完不知道装到哪儿,python 和 python3 命令搞不清楚。最惨的是:项目 A 要 Python 3.9,项目 B 要 Python 3.12,同一台机器根本没法共存。
这篇文章教你两件事:用 pyenv 管理多个 Python 版本,用 venv 给每个项目隔离依赖。掌握这两个工具,环境问题从此不再烦你。
为什么不直接装官网的安装包?
直接装是可以的,但会有两个麻烦:
版本切换难。 官网安装包只能装一个版本,想换版本就得卸了重装。如果你同时维护多个项目,这简直是噩梦。
依赖污染全局。 用 pip install 装的库默认装到系统全局环境里。项目 A 装了 requests==2.28,项目 B 需要 requests==2.31,两个一冲突,不知道谁先崩。
解决方案:pyenv 管版本,venv 隔依赖。
第一步:用 pyenv 安装并切换 Python 版本
pyenv 是一个专门管理多个 Python 版本的工具,类比一下:就像手机里可以装多个版本的 App,随时切换,互不干扰。
安装 pyenv(macOS / Linux)
# 一行命令安装 pyenv
curl https://pyenv.run | bash
安装完成后,按提示把以下几行加到你的 ~/.bashrc 或 ~/.zshrc:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
保存后执行 source ~/.bashrc(或重新开终端),让配置生效。
安装指定版本的 Python
# 查看可以安装哪些版本
pyenv install --list | grep "3\.1"
# 安装 Python 3.12.3
pyenv install 3.12.3
# 设置全局默认版本
pyenv global 3.12.3
# 验证
python --version # 输出:Python 3.12.3
如果某个项目需要旧版本,进到项目目录执行 pyenv local 3.9.18,pyenv 会在该目录创建一个 .python-version 文件,进这个目录时自动切到 3.9.18,出去就还原,丝毫不影响全局。
第二步:用 venv 给项目隔离依赖
venv 是 Python 3 内置的虚拟环境工具,不需要额外安装。每个虚拟环境就是一个独立的"沙盒",在里面安装的库只属于这个环境,互不干扰。
# 进入你的项目目录
cd my_project
# 创建虚拟环境,名字习惯叫 .venv
python -m venv .venv
# 激活虚拟环境(macOS / Linux)
source .venv/bin/activate
# 激活后,终端提示符会变成这样:
# (.venv) $
# 现在安装的库只属于这个项目
pip install requests
# 退出虚拟环境
deactivate
激活之后执行 which python,你会看到路径指向 .venv/bin/python,而不是系统的 Python。这说明你已经完全隔离在这个沙盒里了。
把依赖记录下来
项目做好之后,别忘了把依赖列表保存一份,方便别人(或换电脑的自己)一键复现:
# 导出当前环境所有依赖
pip freeze > requirements.txt
# 在新环境里一键安装
pip install -r requirements.txt
完整工作流:从零开始一个新项目
# 1. 安装并切换到目标 Python 版本
pyenv install 3.12.3
pyenv global 3.12.3
# 2. 新建项目目录并进入
mkdir my_project && cd my_project
# 3. 创建虚拟环境
python -m venv .venv
# 4. 激活
source .venv/bin/activate
# 5. 安装依赖,写代码,搞定!
pip install requests
# 6. 保存依赖快照
pip freeze > requirements.txt
三到五行命令,环境搭好了,再也不会出现"在我机器上能跑"这种尴尬。
小结
| 工具 | 解决的问题 | 核心命令 |
|---|
| pyenv | 多版本共存,随时切换 | pyenv install 3.12.3 / pyenv global 3.12.3 |
| venv | 项目依赖隔离,互不污染 | python -m venv .venv / source .venv/bin/activate |
| pip freeze | 记录依赖,方便复现 | pip freeze > requirements.txt |
记住一句话:pyenv 管版本,venv 管依赖。这是每个 Python 开发者最基础的工作习惯。
下一篇:Day 02 不写 main 也能跑——脚本执行方式与交互式解释器
— 编程语言快速精通 · Python入门合集 —