「在我电脑上能跑啊」——Python虚拟环境,5分钟终结你的依赖地狱

那个经典的社死瞬间

你有没有经历过:同事发来一段Python代码,你`pip install`了一圈,结果还是满屏红字报错。更绝的是——他在自己电脑上跑得好好的。

「在我电脑上能跑啊」——Python虚拟环境,5分钟终结你的依赖地狱封面

“在我电脑上能跑啊” — 程序员最常说的谎言之首

这不是代码的问题,也不是你的问题。这是依赖地狱。而虚拟环境,就是你的逃生通道。

先搞懂:没有虚拟环境时,你的Python在干嘛?

当你在终端敲下`pip install requests`,Python会把`requests`库装进一个叫全局环境的地方。所有项目共享同一套库。

这意味着什么?

– 项目A需要`numpy 1.24`,项目B需要`numpy 2.0`——你只能装一个

– 你做了一个月的项目,系统更新后突然跑不动了——某个依赖悄悄升级了

– 你把代码发给别人,对方装了一堆你用不到的库——环境被污染了

全局环境 = 一个厨房里所有人共用一口锅。 你做蛋糕,他做火锅——这能不出事吗?

虚拟环境:给每个项目一间独立厨房

虚拟环境解决的根本问题是隔离。每个项目有自己的Python解释器 + 自己的库目录,互不干扰。

你的电脑
├── 全局Python(别碰它)
├── 项目A/venv/
│   ├── python(独立解释器)
│   └── lib/numpy 1.24(只有项目A需要的版本)
├── 项目B/venv/
│   ├── python(另一个独立解释器)
│   └── lib/numpy 2.0(只有项目B需要的版本)

一句话总结: 虚拟环境就是给每个项目复制一份”私房Python”,想装什么装什么,删项目就删目录,干干净净。

开干:3条命令搞定(macOS/Linux/WSL2)

### 第一步:创建虚拟环境

# 进入你的项目文件夹
cd my-awesome-project

# 创建虚拟环境(名字习惯叫 venv 或 .venv)
python3 -m venv venv

这会在当前目录下生成一个`venv/`文件夹。这个文件夹不要上传到Git(后面会讲)。

### 第二步:激活虚拟环境

# macOS / Linux / WSL2
source venv/bin/activate

激活成功后,终端提示符前面会出现`(venv)`标记——这就是你的安全区信号。

### 第三步:确认你在虚拟环境里

# 看看现在用的是哪个Python
which python
# 应该输出:.../my-awesome-project/venv/bin/python ✅

# 现在可以放心安装了
pip install requests

完事之后,退出虚拟环境:

deactivate

Windows用户看这里

# 创建(一样)
python -m venv venv

# 激活(不同!)
venv\Scripts\activate

# 如果PowerShell报"无法运行脚本":
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

写完代码发给别人?用 requirements.txt

虚拟环境只在你自己电脑上。同事拉取你的代码后,需要重建环境:

# 你:导出当前环境的所有依赖
pip freeze > requirements.txt

# 同事:根据文件安装一模一样的依赖
pip install -r requirements.txt

requirements.txt就是这个项目的”购物清单”,有了它,谁都能还原出完全相同的环境。

进阶:.gitignore 别忘了这行

虚拟环境文件夹`venv/`有几千个小文件,又大又乱,绝对不应该上传到Git。在你的项目根目录创建一个`.gitignore`文件,加上:

venv/
.env
__pycache__/
*.pyc

这是一个好习惯,从现在开始养成。

常见翻车现场

| 现象 | 原因 | 解决 |

|——|——|——|

| `pip install`报`permission denied` | 你在全局环境里安装,没权限 | 先`source venv/bin/activate` |

| `python`命令还是指向系统Python | 没激活虚拟环境 | 检查终端前缀有没有`(venv)` |

| `pip freeze`列出一百多个包 | 你忘了创建虚拟环境,直接在全局装了 | 这次忍了,下次记得先`python3 -m venv venv` |

| 删了`venv/`文件夹项目跑不了 | 删的是环境,不是代码 | 重新`python3 -m venv venv && pip install -r requirements.txt` |

学完这篇文章,你应该能回答

– 为什么每个Python项目都需要自己的虚拟环境?

– `venv`文件夹里到底装了什么?

– `requirements.txt`是干什么的?

– 激活和退出虚拟环境的命令是什么?


今日行动: 找到一个你正在写的Python项目,花30秒给它创建一个虚拟环境。`python3 -m venv venv && source venv/bin/activate`——你就多了一层保护,告别”在我电脑上能跑”。

好代码的标准之一:换台电脑,一条命令就能跑起来。


— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn

滚动至顶部
微信公众号:LC智趣厅

扫码关注微信公众号
LC智趣厅