主题
Python 安装与环境搭建
在真正开始学习 Python 语法之前,我们必须先解决一个更现实的问题:代码运行在哪里?项目如何隔离?依赖如何管理?如果这些基础没有打牢,后续一切学习都会变得混乱。
很多初学者认为"安装 Python"只是下载一个安装包,点击下一步即可完成,但对于面向工程开发的大模型项目而言,环境管理远比想象中重要,因为模型依赖往往庞大而复杂,一旦版本冲突,整个项目就可能无法运行。因此,我们从第一节开始,就用工程化思维来搭建环境,而不是停留在入门层面。
安装 Python
Python 官网地址是:
https://www.python.org进入下载页面后,根据操作系统选择对应版本。当前建议选择 Python 3.10 或 3.11,这两个版本在大模型生态中兼容性较好。
| 版本选择 | 说明 |
|---|---|
| 过旧版本 | 可能无法运行最新框架 |
| 过新版本 | 有时存在生态适配问题 |
| 稳定主流版本 | 最合理的策略(推荐 3.10/3.11) |
安装时有一个选项必须勾选:
Add Python to PATH
如果没有勾选,后续在命令行中将无法直接使用 python 命令。
安装完成后,打开终端(Windows 使用 PowerShell 或 CMD,Mac/Linux 使用 Terminal),输入:
bash
python --version如果看到版本号输出,说明安装成功。
理解 Python 解释器
当你运行一段 Python 代码时,本质上是由 Python 解释器 读取代码文件,然后逐行执行。
可以直接进入交互模式测试:
bash
python进入后你会看到类似:
>>>在这里输入:
python
print("Hello, Python")这说明你的解释器已经可以正常工作。
不过,真实项目开发并不会在交互模式中完成,我们更关心的是项目结构和环境隔离。
为什么必须使用虚拟环境
当你开始接触大模型相关项目时,你会发现一个现实问题:不同项目依赖的库版本往往不同。例如:
| 项目 | 依赖版本 |
|---|---|
| 项目 A | transformers 4.30 |
| 项目 B | transformers 4.38 |
如果直接在系统环境中安装,版本冲突几乎不可避免。因此,我们必须为每个项目创建独立环境,这就是虚拟环境存在的意义。
虚拟环境的本质,是在当前目录下创建一个独立的 Python 运行副本,以及独立的第三方库目录,使项目之间互不影响。
创建虚拟环境(venv)
Python 3 自带虚拟环境工具 venv,无需额外安装。
在项目目录下执行:
bash
python -m venv venv这条命令会创建一个名为 venv 的文件夹,内部包含:
- 独立解释器
- site-packages 目录
- 脚本文件
接下来需要激活环境。
Windows:
bash
venv\Scripts\activateMac / Linux:
bash
source venv/bin/activate激活成功后,终端前面会出现:
(venv)这意味着后续安装的所有库,都只会存在于当前项目环境中。
依赖管理与 pip
在激活虚拟环境后,可以安装库:
bash
pip install requests此时 requests 只会安装到当前 venv 中,而不会污染系统环境。
当项目开发完成后,可以导出依赖:
bash
pip freeze > requirements.txt这个文件记录了所有安装的库及其版本,其他人只需执行:
bash
pip install -r requirements.txt即可复现完整环境。
在大模型项目中,这一步尤其关键,因为模型框架依赖复杂,环境不可控会导致运行失败。
推荐的项目目录结构
从第一天开始就养成结构规范习惯。
一个标准 Python 项目结构可以是:
my_project/
│
├── venv/ # 虚拟环境
├── src/ # 源代码
│ ├── main.py
│ └── utils.py
│
├── requirements.txt
└── README.md如果是未来的大模型项目,还可能增加:
├── data/
├── models/
├── logs/结构清晰的项目,维护成本会显著降低。
关于 IDE 的选择
你可以使用:
| IDE | 特点 |
|---|---|
| VSCode | 轻量推荐 |
| PyCharm | 功能强大 |
对于大模型开发,VSCode 配合 Python 插件即可满足绝大多数需求,而且对虚拟环境识别友好。
本节的核心理解
到这里,你不仅完成了 Python 安装,更重要的是建立了工程思维:
- 代码必须运行在可控环境中
- 每个项目必须隔离依赖
- 环境必须可复现
这些习惯将在后续学习 FastAPI、LangChain、RAG 系统时发挥关键作用。