当前位置:首页>python>第1.4章:快速弄懂Python的虚拟环境与依赖

第1.4章:快速弄懂Python的虚拟环境与依赖

  • 2026-08-28 06:15:41
第1.4章:快速弄懂Python的虚拟环境与依赖

《Python AI 应用开发入门》第 1.4 节。

创建和管理虚拟环境、项目依赖及安全的环境变量。

本节目标

学完本节后,你应当能够:

  1. 1. 解释项目为什么需要虚拟环境。
  2. 2. 创建、激活、验证和退出 .venv。
  3. 3. 在正确环境中安装、查看和卸载第三方包。
  4. 4. 使用 requirements.txt 记录并重建依赖。
  5. 5. 理解环境变量与 API Key 的基本安全规则。

1. 为什么需要虚拟环境

假设你有两个项目:

  • • 项目 A 需要某个库的 1.x 版本。
  • • 项目 B 需要同一个库的 2.x 版本。

如果所有库都安装到同一个全局 Python 中,它们可能互相冲突。虚拟环境为每个项目提供独立的解释器入口和第三方包目录。

项目 A ── .venv ── 依赖 1.x项目 B ── .venv ── 依赖 2.x

虚拟环境隔离的是 Python 包,不是虚拟机,也不会复制整个操作系统。

通常每个 Python 项目创建一个 .venv,但不把 .venv 提交到 Git。

2. 创建虚拟环境

先在终端进入项目根目录,并通过 pwd 和 ls 确认位置。

macOS / Linux

python3 -m venv .venv

Windows PowerShell

py -m venv .venv

命令含义:

  • • python3 / py:使用哪个基础 Python。
  • • -m venv:运行标准库中的虚拟环境模块。
  • • .venv:新环境的目录名称。

创建成功后,项目中会出现 .venv 目录。

3. 激活虚拟环境

macOS / Linux

source .venv/bin/activate

Windows PowerShell

.venv\Scripts\Activate.ps1

激活后,终端提示符前通常会出现 (.venv)。但不能只依赖提示符,还应该验证解释器位置。

验证环境

激活后运行:

python --versionpython -m pip --version

macOS / Linux 再运行:

which python

Windows 运行:

where.exe python

路径应该指向当前项目中的 .venv。

创建环境前常用 python3 或 py;激活后统一使用 python 和 python -m pip,这样能明确使用当前虚拟环境。

4. 退出并重新进入环境

退出虚拟环境:

deactivate

关闭终端也会结束当前激活状态。下次打开项目时,需要重新激活:

macOS / Linux:

source .venv/bin/activate

Windows PowerShell:

.venv\Scripts\Activate.ps1

虚拟环境不会因为退出而被删除,退出只是让当前终端不再优先使用它。

5. 安装第一个第三方包

确认虚拟环境已激活,然后运行:

python -m pip install httpx

httpx 是一个 HTTP 客户端,之后调用 Web API 时会用到类似工具。

查看包信息:

python -m pip show httpx

查看环境中已经安装的包:

python -m pip list

创建 package_check.py:

import httpxprint("httpx 安装成功")print(f"当前版本:{httpx.__version__}")

运行:

python package_check.py

如果没有 ModuleNotFoundError,说明当前解释器可以找到这个包。

6. 记录项目依赖

在项目根目录、虚拟环境已激活时运行:

python -m pip freeze > requirements.txt

打开 requirements.txt,会看到包名和版本,例如:

httpx==某个版本号

这里不手写固定版本号,以实际安装结果为准。

requirements.txt 记录“项目需要哪些第三方包”,.venv 保存“本机已经安装好的包”。因此通常提交前者,不提交后者。

7. 从依赖文件重建环境

其他开发者拿到项目后,不需要复制你的 .venv。他们可以:

python3 -m venv .venvsource .venv/bin/activatepython -m pip install -r requirements.txt

Windows 前两步替换为:

py -m venv .venv.venv\Scripts\Activate.ps1

这种方式更小、更清晰,也避免不同操作系统间直接复制虚拟环境造成问题。

8. 卸载包

python -m pip uninstall httpx

卸载后再次运行 package_check.py,应该出现 ModuleNotFoundError。重新执行下面的命令即可根据依赖文件恢复:

python -m pip install -r requirements.txt

这个实验能帮助你理解“代码”“依赖清单”和“实际安装环境”的区别。

9. .gitignore

项目根目录建议创建 .gitignore:

# Python 虚拟环境.venv/# Python 缓存__pycache__/*.py[cod]# 本地环境变量和密钥.env.env.*!.env.example# 编辑器和操作系统文件.DS_Store.vscode/

.gitignore 只是告诉 Git 忽略文件,不会删除文件,也不能保护已经提交到历史中的密钥。

10. 环境变量与 API Key

AI 服务通常使用 API Key 识别调用者并计算费用。它和密码类似,不应该:

  • • 直接写在 .py 文件中。
  • • 出现在截图、聊天记录或日志中。
  • • 提交到 Git。
  • • 复制给不可信的人或网站。

Python 可以从环境变量读取配置:

import osapi_key = os.getenv("AI_API_KEY")if api_key is None:    print("尚未配置 AI_API_KEY")else:    print("已经读取到 API Key,但不会打印它的内容")

临时设置一个假的练习值:

macOS / Linux:

export AI_API_KEY="practice-only-not-a-real-key"python env_check.py

Windows PowerShell:

$env:AI_API_KEY = "practice-only-not-a-real-key"python env_check.py

关闭终端后,临时变量通常失效。后续调用真实 AI API 时再学习 .env 文件或密钥管理服务。

永远不要为了“检查是否读取成功”而打印完整真实密钥。最多只打印是否存在,或经过掩码的极少部分。

11. 常见问题

安装成功但 import 失败

最常见原因是安装和运行使用了不同解释器。依次检查:

which pythonpython -m pip --versionpython -m pip show httpx

Windows 把 which python 换成 where.exe python。

确认这些路径都指向当前项目的 .venv。

VS Code 仍然显示模块不存在

终端环境正确不代表编辑器自动选择了同一解释器。在编辑器中把 Python 解释器切换到 .venv。

PowerShell 禁止运行激活脚本

这是 Windows 执行策略问题。不要从未知网站复制命令绕过安全策略。可以查阅 Microsoft 官方说明,或暂时不激活环境,直接使用:

.venv\Scripts\python.exe -m pip --version.venv\Scripts\python.exe your_script.py

虚拟环境即使未“激活”也可以通过完整解释器路径使用。

动手练习

练习 1:完成虚拟环境生命周期

依次完成并记录结果:

  1. 1. 创建 .venv。
  2. 2. 激活环境。
  3. 3. 验证 python 和 pip 的路径。
  4. 4. 安装 httpx。
  5. 5. 运行 package_check.py。
  6. 6. 退出环境。
  7. 7. 重新激活并再次运行程序。

练习 2:通过依赖文件恢复

  1. 1. 生成 requirements.txt。
  2. 2. 卸载 httpx。
  3. 3. 运行程序并观察错误。
  4. 4. 使用 requirements.txt 重新安装依赖。
  5. 5. 确认程序恢复正常。

练习 3:读取练习环境变量

创建 env_check.py,要求:

  • • 从 AI_API_KEY 读取值。
  • • 未配置时输出清晰提示。
  • • 已配置时只说明“配置成功”,绝不输出变量内容。

随堂小测

  1. 1. 虚拟环境主要解决什么问题?
  2. 2. 激活 .venv 后,怎样确认当前确实在使用它?
  3. 3. .venv 和 requirements.txt 应该分别如何处理?
  4. 4. 为什么推荐 python -m pip install ...?
  5. 5. API Key 为什么不能直接写在代码中?

参考答案

  1. 1. 隔离不同项目的 Python 解释器入口和第三方包,减少版本冲突与环境污染。
  2. 2. 查看 which python/where.exe python 与 python -m pip --version,路径应指向项目 .venv。
  3. 3. .venv 通常加入 .gitignore,不提交;requirements.txt 通常提交,用于重建环境。
  4. 4. 它确保 pip 由当前 Python 解释器运行,降低安装到错误环境的概率。
  5. 5. 密钥可能被代码仓库、日志、截图或其他人获取,造成数据与费用风险。

本节完成检查

  • • 我能创建、激活、验证和退出 .venv。
  • • 我能在正确环境中安装和卸载包。
  • • 我生成了 requirements.txt 并用它恢复过依赖。
  • • 我创建了 .gitignore,其中忽略 .venv 和 .env。
  • • 我知道真实 API Key 不能写进代码或提交到 Git。

最新文章

随机文章