刚开始学Python的时候,很多人都碰到过这个问题:A项目需要 Django 2.x,B项目需要 Django 4.x,装完一个另一个就用不了,版本冲突搞得头大。
这就是为什么你需要虚拟环境。今天整理一下我日常用的Python虚拟环境方案,帮你告别版本混乱。
内置方案:venv
Python 3.3 之后,标准库已经自带了 venv,不用装任何第三方工具,够用了:
# 创建虚拟环境 python3 -m venv myenv # 激活虚拟环境(Linux/macOS) source myenv/bin/activate # 激活虚拟环境(Windows CMD) myenv\Scripts\activate.bat # 退出虚拟环境 deactivate
优点:不用装,原生支持,简单干净
缺点:不能全局管理多个Python版本,对新手来说激活略麻烦
流行选择:conda
如果你做数据科学、机器学习,conda 真的很香,不仅能管理环境,还能管理Python版本:
# 创建环境 conda create -n myenv python=3.10 # 激活环境 conda activate myenv # 列出所有环境 conda info --envs # 删除环境 conda remove -n myenv --all
优点:
- 可以管理不同Python版本
- 不仅能装Python包,还能装C库,机器学习环境不用自己折腾
- 跨平台一致性好
缺点:
- 体积大,默认会装很多你用不上的包
- 仓库源有时候慢,需要换国内源
现代工具:uv
最近新出的 uv 真的惊艳到我了,Rust写的,速度比pip快几十倍,还能管理虚拟环境,强烈推荐试试:
# 安装uv curl -LsSf https://astral.sh/uv/install.sh | sh # 创建项目并初始化虚拟环境 uv init myproject cd myproject # 安装依赖 uv add requests # 激活环境 source .venv/bin/activate
uv 真的快,依赖解析比pip快太多,体验提升很明显。我现在新项目都开始用uv了。
我的日常工作流
不同场景用不同工具:
- 简单小脚本 / 单个项目 → 直接用Python自带venv,干净简单,不用装别的
- 数据科学 / 机器学习项目 → conda,省心,不用折腾CUDA
- 新开源项目 / 库开发 → uv,快,体验好
- 老项目维护 → virtualenv + requirements.txt,稳定就行
几个好习惯
- 不要用全局环境装各种包,越装越乱,最后不知道哪个包是干什么的
- 每个项目一个独立环境,项目删了环境直接删,干净
- 一定要锁依赖版本,requirements.txt 或者 pyproject.toml,部署的时候不会出问题
- 不要把虚拟环境目录提交到Git,加上 .gitignore
总结
虚拟环境不是什么高深技术,但用对了能帮你省好多时间,不用天天解决版本冲突。
新手推荐从内置venv开始用,先搞明白概念,再根据自己的需求换工具。不用追求”最流行”,适合你工作流的就是最好的。
你平时用什么工具管理Python环境?欢迎留言交流。
这篇是日常开发经验总结,适合新手入门参考。