Skip to content

第 11 章 · 虚拟环境与 pip:装上别人写好的轮子 ​

本章目标 ​

给每个项目建一个独立环境,会用 pip 装库,会导出/还原依赖。

11.1 为什么要"虚拟环境" ​

假设:

  • A 项目需要 requests 2.31
  • B 项目需要 requests 2.28

如果所有库都装在一起,就会互相打架。虚拟环境 = 给每个项目一间独立房间,各有各的库版本,互不影响。

顺带好处:项目删掉时,rm -rf 环境名 就把依赖一起清干净,不污染系统。

11.2 创建与激活 ​

bash
# ① 在项目目录下创建(会生成 venv 文件夹)
python -m venv venv

# ② 激活
# Windows (cmd):
venv\Scripts\activate
# Windows (PowerShell):
venv\Scripts\Activate.ps1
# macOS / Linux:
source venv/bin/activate

# ③ 激活成功的标志:命令行前面多了 (venv)
(venv) C:\projects\demo>

# ④ 退出
deactivate

⚠️ PowerShell 可能报"禁止运行脚本",此时执行一次:

powershell
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

⚠️ 每个新开的终端都要重新激活一次,忘了激活就会装到全局环境里。

11.3 pip 常用命令 ​

bash
python -m pip install requests              # 装
python -m pip install requests==2.31.0      # 装指定版本
python -m pip install --upgrade requests    # 升级
python -m pip uninstall requests            # 卸载
python -m pip list                          # 已装的库
python -m pip show requests                 # 看详情

用 python -m pip 而不是直接 pip,可以保证"装到当前这个 Python 环境里",少踩坑。

国内下载慢?换镜像:

bash
python -m pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

永久换源(一次搞定):

bash
python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

11.4 记录依赖:requirements.txt ​

bash
# 导出当前环境所有库及版本
python -m pip freeze > requirements.txt

# 别人(或未来的你)一键还原
python -m pip install -r requirements.txt

requirements.txt 长这样:

text
requests==2.31.0
pandas==2.2.2

养成习惯:项目一开始就 pip freeze > requirements.txt,换电脑、部署服务器时能省几小时。

11.5 值得早点用的第三方库 ​

库干什么
requests发 HTTP 请求(抓网页、调 API)
pandas表格数据处理(Excel 的增强版)
openpyxl读写 Excel
beautifulsoup4 / lxml解析 HTML
flask / fastapi写 Web 服务和接口
rich终端里打印漂亮表格/进度条
tqdm循环进度条
python-dotenv管理 .env 配置
loguru更好用的日志

安装示例:

bash
python -m pip install requests pandas openpyxl

第一个小例子:

python
import requests

r = requests.get("https://api.github.com", timeout=10)
print(r.status_code)          # 200
print(r.json()["current_user_url"])
python
import pandas as pd

df = pd.DataFrame({"名称": ["A", "B"], "价格": [10.0, 20.5]})
df["税后"] = df["价格"] * 1.13
print(df)
df.to_excel("out.xlsx", index=False)      # 需要 openpyxl

11.6 常见坑 ​

现象原因解决
ModuleNotFoundError没装 / 装到别的环境了确认已激活 venv,再 pip install
pip 不是内部命令Python 没加 PATH用 python -m pip
装了库但 import 报错文件名和库重名改文件名(如 json.py)
装了 CPU/GPU 版本不对环境混用重建虚拟环境最省事
装得很慢默认源在国外换清华/阿里镜像

11.7 练一练 ​

  1. 新建一个目录 demo-venv,创建虚拟环境并激活,确认命令行前面出现 (venv)。
  2. 安装 requests,写一个小脚本请求 https://httpbin.org/get 并打印返回的 JSON。
  3. 导出 requirements.txt,然后 pip uninstall requests,再用 -r requirements.txt 装回来。

本章关键词 ​

venv、激活/退出、pip install / freeze / uninstall、requirements.txt、镜像源、requests、pandas

试图用自己的方式,重新定义属于我的人生