有些急性子

有些急性子

有些急性子
jike

AI编程必学-虚拟环境完全指南

AI 代码今天能跑明天就崩?5 分钟搞定虚拟环境#


你一定遇到过这个问题#

昨天你让 ChatGPT 写了个数据分析脚本,运行得好好的。

今天你又让 AI 写了个爬虫项目,装了新版本的 pandas。

结果,昨天的数据分析脚本突然报错了:

AttributeError: 'DataFrame' object has no attribute 'append'

你懵了:我什么都没改,怎么就不能跑了?


问题出在这里:新项目需要 pandas 2.0,你用pip install升级了系统里的 pandas。

但旧项目是基于 pandas 1.5 写的,pandas 2.0 移除了.append()方法。

系统只能装一个版本,新项目能跑了,旧项目就崩了。


这篇文章会告诉你

  • 为什么会出现这种 "按下葫芦浮起瓢" 的问题
  • 专业开发者怎么解决(虚拟环境)
  • 5 分钟学会用 uv 工具管理虚拟环境
  • 3 个新手最容易踩的坑

阅读时间:8 分钟
实操时间:5 分钟
前提:你已经装好 Python,能运行简单代码


第 1 章:为什么你的项目会互相 "打架"?#

依赖冲突示意图

问题的本质#

你的电脑上有一个系统 Python 环境,所有用pip install装的库都放在这里。

C:\Python\Lib\site-packages\
├─ pandas (只能装一个版本!)
├─ numpy
└─ requests

当你做多个项目时,问题就来了:

场景 1

  • 项目 A(3 个月前写的数据分析):需要 pandas 1.5
  • 项目 B(今天写的爬虫):需要 pandas 2.0

你装了 pandas 2.0,系统里的 1.5 就被覆盖了。


场景 2

  • 项目 C:AI 聊天机器人,用了 openai 库
  • 项目 D:图像处理,用了 pillow、opencv

3 个月后,你想重新运行项目 C,但忘了当时装了哪些库。

系统环境里躺着 50 个库,你也不知道哪些是项目 C 需要的。


场景 3

你把代码发给同事,他问:"我需要装什么库?"

你回答:"呃...pandas、numpy、requests... 还有啥来着?"

同事按你说的装了,但版本不对,代码还是报错。


问题根源#

系统环境 = 公共衣柜

所有人(所有项目)共用一个柜子:

  • 哥哥要放球鞋,妹妹要放高跟鞋
  • 爸爸的皮鞋和妈妈的拖鞋混在一起
  • 时间久了,谁都不敢删东西(怕影响别人)

这就是为什么你的项目会互相打架。


第 2 章:虚拟环境 - 给每个项目一个独立房间#

专业开发者的做法#

不要让所有项目共用系统环境,而是给每个项目创建一个独立的虚拟环境

虚拟环境 = 独立房间

每个项目有自己的房间(.venv文件夹):

  • 项目 A 在自己房间装 pandas 1.5
  • 项目 B 在自己房间装 pandas 2.0
  • 两个房间互不干扰,各玩各的

一张图看懂#

核心概念对比

目录结构透视

你的电脑

├─ 系统Python环境 (公共客厅,尽量空着)
│  └─ 只装Python本身和uv工具

└─ 你的项目文件夹

   ├─ 项目A:数据分析
   │  ├─ analysis.py (你的代码)
   │  └─ .venv (项目A的独立房间)
   │      └─ pandas 1.5

   └─ 项目B:爬虫
      ├─ scraper.py
      └─ .venv (项目B的独立房间)
          └─ pandas 2.0  ← 和项目A不冲突!

核心价值#

1. 版本隔离

  • 项目 A 用 pandas 1.5,项目 B 用 2.0,互不影响

2. 依赖清晰

  • 每个项目的.venv只装这个项目需要的库
  • 3 个月后重新运行,依赖关系一目了然

3. 可复现

  • 导出requirements.txt,别人一键重建你的环境
  • 不用再问 "你装了啥库"

4. 干净可删

  • 删除项目文件夹,.venv一起删除
  • 系统环境永远干净

类比理解#

不用虚拟环境

全家人共用一个衣柜(系统环境)
├─ 爸爸的衣服
├─ 妈妈的衣服
├─ 哥哥的衣服
└─ 妹妹的衣服  ← 全混在一起,谁都不敢删

用虚拟环境

每个人有自己的衣柜(虚拟环境)
├─ 爸爸的房间/.venv  →  放爸爸的衣服
├─ 妈妈的房间/.venv  →  放妈妈的衣服
├─ 哥哥的房间/.venv  →  放哥哥的衣服
└─ 妹妹的房间/.venv  →  放妹妹的衣服
                          ↑ 互不干扰!

第 3 章:实战 - 5 分钟学会用 uv 管理虚拟环境#

uv 工作流全景图

虚拟环境的概念懂了,现在学怎么用。

传统工具是pip + venv,但我推荐直接用uv:更快、更简单、一站式。


步骤 1:安装 uv 工具(1 分钟)#

Windows 用户

打开 PowerShell,运行:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Mac/Linux 用户

打开终端,运行:

curl -LsSf https://astral.sh/uv/install.sh | sh

安装完成后,验证:

uv --version

看到版本号就成功了!

uv 版本号


步骤 2:创建你的第一个虚拟环境(2 分钟)#

假设你要做一个数据分析项目。

2.1 创建项目文件夹

mkdir data-analysis
cd data-analysis

2.2 创建虚拟环境

在项目文件夹里运行:

uv venv

你会看到提示:

Creating virtual environment at .venv

这个命令在项目文件夹里创建了一个.venv隐藏文件夹,里面有:

  • 独立的 Python 解释器
  • 独立的库存放空间

venv 文件夹


2.3 激活虚拟环境

创建完还要 "激活",告诉电脑 "接下来用这个项目的 Python"。

Windows

.venv\Scripts\activate

Mac/Linux

source .venv/bin/activate

激活成功后,终端提示符前面会出现(.venv)

(.venv) C:\Users\YourName\data-analysis>

这个(.venv)标志说明:你现在在项目的独立房间里了!


步骤 3:安装库和运行代码(2 分钟)#

现在你在虚拟环境里,可以装库了。

3.1 安装 pandas

uv pip install pandas

uv 速度很快,几秒钟就装好了。

这个 pandas只装在.venv,不会影响系统环境!


3.2 测试代码

创建一个test.py文件:

import pandas as pd

print(f"pandas版本: {pd.__version__}")

data = pd.DataFrame({
    '项目': ['A', 'B', 'C'],
    '依赖': ['pandas 1.5', 'pandas 2.0', 'openai 1.0']
})

print("\n虚拟环境让它们和平共处:")
print(data)

运行:

python test.py

输出:

pandas版本: 2.x.x

虚拟环境让它们和平共处:
  项目      依赖
0   A  pandas 1.5
1   B  pandas 2.0
2   C  openai 1.0

成功!


3.3 验证隔离性(关键实验!)

现在做个实验,验证虚拟环境真的隔离了。

实验 1:退出虚拟环境

deactivate

终端的(.venv)消失了,说明你回到系统环境了。


实验 2:尝试运行代码

python test.py

报错:

ModuleNotFoundError: No module named 'pandas'

为什么?因为 pandas 只装在.venv里,系统环境没有!


实验 3:重新激活虚拟环境

# Windows
.venv\Scripts\activate

# Mac/Linux
source .venv/bin/activate

再运行:

python test.py

又能正常运行了!

这就是虚拟环境的魔法

  • 进房间(activate) → 有家具(pandas)
  • 出房间(deactivate) → 毛坯(没有 pandas)
  • 系统环境完全没变

为什么选 uv 而不是 pip?#

对比pip + venvuv
安装速度快 10-100 倍
装 pandas20 秒2 秒
操作步骤python -m venv .venv
activate
pip install
uv venv
activate
uv pip install
学习曲线需要学两个工具一个工具搞定

对新手来说,uv 更简单、更快。


第 4 章:3 个新手最容易踩的坑#

我教过十几个朋友,90% 的人会踩这 3 个坑。


坑 1:忘记激活虚拟环境就运行代码#

症状

明明装了 pandas,还是报错ModuleNotFoundError

原因

你在虚拟环境里装的,但在系统环境运行代码。

解决

养成习惯:每次运行代码前,先看终端有没有(.venv)

没有就运行:

# Windows
.venv\Scripts\activate

# Mac/Linux
source .venv/bin/activate

看到(.venv),再运行代码。


激活状态对比

激活状态对比


快速检查命令

不确定自己在哪个环境?运行:

python -c "import sys; print(sys.executable)"

输出包含.venv就对了:

C:\Users\YourName\data-analysis\.venv\Scripts\python.exe  ✅

输出是系统路径就错了:

C:\Python\python.exe  ❌ 需要激活虚拟环境

坑 2:把.venv 文件夹上传到 Git#

症状

项目文件夹几百 MB,上传 GitHub 卡半天。

原因

.venv包含所有库的完整代码,体积很大(100-500MB)。

但它不应该上传,因为:

  1. 太大,浪费流量
  2. 不同操作系统不兼容(Windows 的不能在 Mac 用)
  3. 别人可以用requirements.txt重建

解决

在项目根目录创建.gitignore文件:

.venv/

Git 就会忽略.venv


正确做法

上传requirements.txt,不上传.venv

导出依赖列表:

uv pip freeze > requirements.txt

别人拿到代码后:

uv venv
source .venv/bin/activate
uv pip install -r requirements.txt

几秒钟,环境就一模一样了!


坑 3:不知道 requirements.txt 的作用#

场景

3 个月后,你想重新运行项目,但忘了当时装了哪些库。

或者,你把代码发给朋友,他不知道需要装什么。

解决

requirements.txt记录依赖。

生成

uv pip freeze > requirements.txt

文件内容(记录精确版本):

pandas==2.1.0
numpy==1.25.2
requests==2.31.0

使用

uv pip install -r requirements.txt

一键安装所有依赖,版本完全一致。


类比

协作流程图

requirements.txt = 购物清单
你去超市(PyPI)按清单买东西(安装库)

最佳实践

每次装新库,更新requirements.txt

uv pip install new-package
uv pip freeze > requirements.txt
git add requirements.txt
git commit -m "add new-package"

第 5 章:一张清单,建立正确习惯#

新项目标准流程(6 步)#

□ 创建项目文件夹: mkdir my-project
□ 进入文件夹: cd my-project
□ 创建虚拟环境: uv venv
□ 激活环境: source .venv/bin/activate (Mac) 或 .venv\Scripts\activate (Win)
□ 安装依赖: uv pip install pandas numpy
□ 导出依赖: uv pip freeze > requirements.txt
□ 创建.gitignore: echo ".venv/" > .gitignore

把这个 checklist 贴在桌上,养成肌肉记忆。


常用命令速查表#

操作WindowsMac/Linux
创建虚拟环境uv venvuv venv
激活.venv\Scripts\activatesource .venv/bin/activate
退出deactivatedeactivate
安装库uv pip install 库名uv pip install 库名
导出依赖uv pip freeze > requirements.txt同左
安装依赖uv pip install -r requirements.txt同左

故障排查清单#

代码运行失败?按顺序检查:

□ 虚拟环境激活了吗?(终端有(.venv)标志?)
□ 库装在虚拟环境里了吗?(激活后pip list查看)
□ 终端当前目录对吗?(pwd或cd查看)
□ requirements.txt更新了吗?

3 条铁律#

铁律 1:永远不要在系统环境装库
系统环境只装 Python 和 uv,其他什么都不装。

铁律 2:新项目第一件事 - 创建虚拟环境
养成习惯:mkdir → cd → uv venv → activate

铁律 3:统一用 uv,不要混用 pip
不要pip installuv pip install混着用。


下一步学什么?#

你现在已经掌握了虚拟环境的核心技能!

可选进阶方向

  1. 学 Git 版本控制(管理代码变更)
  2. 学 VS Code + Python 插件(专业编辑器)
  3. 学 Jupyter Notebook(交互式编程)
  4. 深入 uv 高级功能(uv.lock 锁文件)

最重要的建议

不要只看教程,动手做 3 个项目

  1. 项目 1:数据分析脚本(用 pandas)
  2. 项目 2:简单爬虫(用 requests)
  3. 项目 3:AI 聊天机器人(用 openai)

每个项目都用虚拟环境,3 个项目做完,你对虚拟环境的理解会比读 10 遍教程还深。


记住这句话

"虚拟环境不是麻烦,而是救命稻草。"

现在你知道怎么避免项目互相打架了,去用 AI 做点有趣的事情吧!

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。