Python虚拟环境这么用,告别版本混乱

Python代码

刚开始学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,稳定就行

几个好习惯

  1. 不要用全局环境装各种包,越装越乱,最后不知道哪个包是干什么的
  2. 每个项目一个独立环境,项目删了环境直接删,干净
  3. 一定要锁依赖版本,requirements.txt 或者 pyproject.toml,部署的时候不会出问题
  4. 不要把虚拟环境目录提交到Git,加上 .gitignore

总结

虚拟环境不是什么高深技术,但用对了能帮你省好多时间,不用天天解决版本冲突。

新手推荐从内置venv开始用,先搞明白概念,再根据自己的需求换工具。不用追求”最流行”,适合你工作流的就是最好的。

你平时用什么工具管理Python环境?欢迎留言交流。


这篇是日常开发经验总结,适合新手入门参考。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部