《Python AI 应用开发入门》第 1.4 节。
创建和管理虚拟环境、项目依赖及安全的环境变量。
本节目标
学完本节后,你应当能够:
- 4. 使用
requirements.txt 记录并重建依赖。 - 5. 理解环境变量与 API Key 的基本安全规则。
1. 为什么需要虚拟环境
假设你有两个项目:
如果所有库都安装到同一个全局 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。
创建成功后,项目中会出现 .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 识别调用者并计算费用。它和密码类似,不应该:
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:完成虚拟环境生命周期
依次完成并记录结果:
练习 2:通过依赖文件恢复
- 4. 使用
requirements.txt 重新安装依赖。
练习 3:读取练习环境变量
创建 env_check.py,要求:
- • 已配置时只说明“配置成功”,绝不输出变量内容。
随堂小测
- 2. 激活
.venv 后,怎样确认当前确实在使用它? - 3.
.venv 和 requirements.txt 应该分别如何处理? - 4. 为什么推荐
python -m pip install ...?
参考答案
- 1. 隔离不同项目的 Python 解释器入口和第三方包,减少版本冲突与环境污染。
- 2. 查看
which python/where.exe python 与 python -m pip --version,路径应指向项目 .venv。 - 3.
.venv 通常加入 .gitignore,不提交;requirements.txt 通常提交,用于重建环境。 - 4. 它确保 pip 由当前 Python 解释器运行,降低安装到错误环境的概率。
- 5. 密钥可能被代码仓库、日志、截图或其他人获取,造成数据与费用风险。
本节完成检查
- • 我生成了
requirements.txt 并用它恢复过依赖。 - • 我创建了
.gitignore,其中忽略 .venv 和 .env。 - • 我知道真实 API Key 不能写进代码或提交到 Git。