Python: pip 与虚拟环境

标准库覆盖了很多场景,但真正开发项目时几乎一定会用到第三方库——requests 发 HTTP 请求、pandas 处理数据、flask 搭网站。这一课教你如何安装、管理这些第三方库,以及如何用虚拟环境隔离不同项目的依赖。


1. pip——Python 包管理器

pip 是 Python 官方的包管理器,用来安装、卸载、管理第三方库。

BASH
# 安装包
pip install requests

# 安装指定版本
pip install requests==2.31.0

# 卸载包
pip uninstall requests

# 列出已安装的包
pip list

# 查看包的信息
pip show requests
💡 pip 从 PyPI(Python Package Index)下载包。 PyPI 是 Python 官方的包仓库,拥有超过 50 万个包。pip install 包名 会自动从 PyPI 下载并安装。



2. requirements.txt

当你的项目依赖多个第三方库时,用 requirements.txt 记录它们:

TXT
requests==2.31.0
flask==3.0.0
pandas==2.0.0
numpy==1.24.0
BASH
# 安装所有依赖(对方拿到项目后执行)
pip install -r requirements.txt

# 生成 requirements.txt(当前环境的所有包)
pip freeze > requirements.txt

▶ 示例:用 requests 调用 API(难度⭐⭐)

TEXT 📖 仅展示
# 需要先安装:pip install requests
import requests

# 调用公开 API 获取天气信息(示例 API)
try:
    response = requests.get(
        "https://api.open-meteo.com/v1/forecast",
        params={
            "latitude": 39.9,
            "longitude": 116.4,
            "current_weather": True
        },
        timeout=10
    )
    
    if response.status_code == 200:
        data = response.json()
        weather = data["current_weather"]
        print(f"北京当前温度:{weather['temperature']}°C")
        print(f"风速:{weather['windspeed']} km/h")
    else:
        print(f"请求失败:{response.status_code}")

except requests.exceptions.RequestException as e:
    print(f"网络错误:{e}")


3. 虚拟环境 venv

不同项目可能需要不同版本的同一个包。虚拟环境解决这个问题——每个项目有自己的独立环境。

BASH
# 创建虚拟环境
python -m venv myenv

# 激活虚拟环境
# Windows:
myenv\Scripts\activate
# macOS/Linux:
source myenv/bin/activate

# 激活后,终端提示符前面会显示 (myenv)
# 这时安装的包只在这个环境中

# 退出虚拟环境
deactivate

(1) 工作流程

BASH
# 1. 创建项目目录
mkdir my_project
cd my_project

# 2. 创建虚拟环境
python -m venv venv

# 3. 激活
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate

# 4. 安装依赖
pip install requests flask

# 5. 记录依赖
pip freeze > requirements.txt

# 6. 开发完成后退出
deactivate

# 别人拿到项目后:
# python -m venv venv
# source venv/bin/activate  (或 Windows 的对应命令)
# pip install -r requirements.txt


4. 常用第三方库速览

库名 用途 安装命令 一句话说明
requests HTTP 请求 pip install requests 发 HTTP 请求的最流行方式
flask Web 框架 pip install flask 轻量级 Python Web 框架
pandas 数据分析 pip install pandas Excel 级别的数据处理能力
numpy 数值计算 pip install numpy 高性能数组运算
beautifulsoup4 网页解析 pip install beautifulsoup4 从 HTML 中提取数据
pillow 图片处理 pip install pillow 图片打开/编辑/保存
pytest 测试框架 pip install pytest Python 最流行的测试框架

▶ 示例:用 pandas 读取 CSV(难度⭐⭐)

TEXT 📖 仅展示
# 需要先安装:pip install pandas
import pandas as pd

# 读取 CSV 文件
df = pd.read_csv("students.csv")
print(df.head())                    # 前 5 行
print(f"行数:{len(df)}, 列数:{len(df.columns)}")
print(df.describe())                # 统计信息


▶ 示例:虚拟环境完整工作流(难度⭐)

TEXT 📖 仅展示
# 1. 创建项目目录
mkdir my_data_project
cd my_data_project

# 2. 创建虚拟环境
python -m venv venv

# 3. 激活虚拟环境(Windows)
venv\Scripts\activate
# 激活虚拟环境(macOS/Linux)
# source venv/bin/activate

# 4. 安装项目依赖
pip install requests pandas

# 5. 验证安装
pip list
# 输出:
# Package    Version
# ---------- -------
# pandas     2.x.x
# requests   2.x.x

# 6. 冻结依赖到文件
pip freeze > requirements.txt

# 7. 查看 requirements.txt 内容
type requirements.txt
# 输出:
# pandas==2.x.x
# requests==2.x.x

# 8. 退出虚拟环境
deactivate

# 9. 他人重建环境
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
💡 关键步骤:创建 → 激活 → 安装 → 冻结 → 退出。 pip freeze > requirements.txt 把当前环境的包版本写入文件,别人用 pip install -r requirements.txt 就能复现完全一样的环境。


5. 常见应用场景


❓ 常见问题

Q pip installpython -m pip install 有什么区别?
A 效果一样。python -m pip 明确指定了用哪个 Python 解释器的 pip,在多 Python 版本环境下更安全。建议养成用 python -m pip install 的习惯。
Q 虚拟环境应该放在项目目录里还是外面?
A 通常放在项目根目录下,命名为 venv.venv。这样其他开发者一看就知道这个目录是虚拟环境。记得把 venv/ 加到 .gitignore 中——虚拟环境不应该提交到代码仓库。
Q pip freeze > requirements.txt 会把所有包都列出来,太多了怎么办?
A pip freeze 确实会列出所有依赖(包括依赖的依赖)。只保留顶层的几个包,去掉间接依赖是常见的做法。也可以用 pipreqs 库,它只扫描你的代码中实际 import 的包。

📖 小节


📝 作业

  1. 基础题(难度⭐):创建一个虚拟环境,激活它,安装 requests 库,用 pip list 确认已安装,然后退出虚拟环境。

  2. 进阶题(难度⭐⭐):用 requests 库调用 https://api.github.com/repos/python/cpython 获取 CPython 仓库的信息,输出仓库名称、Star 数、Fork 数、最后更新时间。

  3. 挑战题(难度⭐⭐⭐):创建一个项目目录,初始化虚拟环境,安装 flaskrequests,用 pip freeze > requirements.txt 生成依赖文件。然后删除虚拟环境,从零开始用 requirements.txt 重建——确认项目可以正常工作。

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏