Flask安装与虚拟环境
课程编号:01-02 | 难度:⭐入门 | 课时:第1-2课时(90分钟)
学习目标:掌握Flask开发环境搭建 | 理解虚拟环境原理 | 克隆运行示例项目
教学目标
知识目标
理解什么是虚拟环境及其在Python开发中的重要性
掌握Python 3内置venv模块的使用方法
了解Flask的核心依赖(Werkzeug、Jinja2)
掌握pip包管理工具的常用命令
理解requirements.txt的作用和格式规范
能力目标
能够独立搭建Flask开发环境
能够创建、激活、退出虚拟环境
能够使用pip安装、卸载、查看Python包
能够编写和管理项目的requirements.txt文件
能够克隆并运行GitHub上的示例项目
素养目标
培养规范化开发的意识(每个项目独立环境)
理解依赖管理在团队协作中的重要性
树立"环境隔离"的工程思维
课堂导入(5分钟)
引入问题
场景一:版本冲突困境
老师提问:同学们,如果你的电脑上需要同时开发两个项目,一个需要Django 2.2,另一个需要Django 4.2,怎么办?
很多同学可能会想当然地说"都装上就行了"。但现实是:
Django 2.2和Django 4.2不能共存于同一个Python环境
升级一个库可能导致另一个项目崩溃
这就是传说中的"依赖地狱"
场景二:团队协作问题
老师继续提问:如果你的同事把他的项目发给你,你如何知道需要安装哪些依赖?手动一个个安装吗?
这就引出了今天要学的核心工具:虚拟环境和依赖管理。
学习路径预览
本课程分为两个部分:
第1课时:虚拟环境详解(理论+实践)
第2课时:Flask安装与项目初始化(实战)
第一部分:理论知识讲解(25分钟)
1.1 核心概念
什么是虚拟环境?
虚拟环境是Python开发中的核心概念,它是一个独立的Python运行环境副本:
特性 说明
独立的Python解释器副本 不依赖系统Python
独立的包安装目录 site-packages独立
独立的pip版本 可以单独升级
完全隔离 与系统全局Python隔离
通俗理解:虚拟环境就像给每个项目分配一个独立的"房间",每个房间里有自己的家具(包),互不干扰。
虚拟环境的核心价值
┌─────────────────────────────────────────────────────┐
│ 你的电脑(全局Python) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │项目A │ │项目B │ │项目C │ │
│ │Django2.2│ │Django4.2│ │Flask1.2 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ ↑ ↑ ↑ │
│ venv_A venv_B venv_C (完全隔离) │
└─────────────────────────────────────────────────────┘
没有虚拟环境时:全局安装Django 4.2 → 项目A(Django 2.2)直接崩溃
有虚拟环境时:每个项目独立环境 → 和平共处,互不影响
1.2 原理分析
venv vs virtualenv
Python 3.3之前,需要使用第三方工具virtualenv创建虚拟环境。
Python 3.3开始,标准库内置了venv模块,推荐使用venv。
工具 来源 备注
virtualenv 第三方库 老项目使用,需要额外安装
venv Python 3.3+内置 官方推荐,零配置
虚拟环境的目录结构
当你执行python3 -m venv venv后,会生成以下目录结构:
venv/
├── bin/ # Unix系统可执行文件(Windows为Scripts)
│ ├── activate # 激活脚本
│ ├── python # 虚拟环境的Python解释器
│ └── pip # 虚拟环境的pip
├── include/ # C头文件
├── lib/ # Python库文件
│ └── python3.x/ # Python版本
│ └── site-packages/ # 第三方包安装目录(核心!)
└── pyvenv.cfg # 配置文件
关键点:site-packages/目录就是虚拟环境"独立"的关键!
1.3 应用场景
场景 说明
多项目并行开发 项目A用Django 2.2,项目B用Django 4.2
团队协作 通过requirements.txt统一环境
学习测试 随意安装包,不污染系统环境
部署准备 确保生产环境与开发环境一致
第二部分:代码演示(30分钟)
2.1 环境准备
检查Python版本
检查Python 3是否已安装(课程需要Python 3.6+)
python3 --version
如果显示"command not found",需要先安装Python 3
Ubuntu: sudo apt-get install python3
macOS: brew install python3
Windows: 从 python.org 下载安装
安装pip(如果需要)
Debian/Ubuntu
sudo apt-get update
sudo apt-get install python3-pip
验证pip安装
pip3 --version
2.2 基础代码(最小可运行示例)
创建虚拟环境
方法一:使用venv(推荐)
在当前目录下创建名为venv的虚拟环境
python3 -m venv venv
方法二:指定Python版本(如果系统有多个Python)
python3.11 -m venv venv
方法三:使用virtualenv(venv不可用时)
首先安装virtualenv
pip3 install virtualenv
创建虚拟环境
virtualenv venv
激活虚拟环境
Linux/macOS:使用source命令激活
source venv/bin/activate
Windows:使用Scripts目录下的activate.bat
在CMD中执行
venv\Scripts\activate.bat
或在PowerShell中执行
venv\Scripts\Activate.ps1
激活成功的标志:
命令行前出现(venv)标识
(venv) root@ubuntu:~$
在虚拟环境中安装Flask
确保已激活虚拟环境(看到venv提示符)
安装Flask(会自动安装Werkzeug和Jinja2依赖)
pip install flask
验证安装
python -c "import flask; print(flask.version)"
查看已安装的所有包
pip list
退出虚拟环境
通用命令(所有系统)
deactivate
2.3 完整案例(实际应用)
场景:克隆并运行Flasky示例项目
Flasky是Miguel Grinberg开发的经典Flask示例项目,我们将完整克隆并运行它:
第一步:克隆GitHub仓库
git clone https://github.com/miguelgrinberg/flasky.git
第二步:进入项目目录
cd flasky
第三步:切换到稳定版本分支(1a版本)
git checkout 1a
第四步:查看项目结构
ls -la
会看到requirements.txt、flasky.py等文件
第五步:创建虚拟环境
python3 -m venv venv
第六步:激活虚拟环境
source venv/bin/activate
第七步:安装依赖(一次性安装所有包)
pip install -r requirements.txt
第八步:运行项目
python flasky.py
应该看到输出:Running on http://127.0.0.1:5000/
requirements.txt标准格式解读
打开flasky项目的requirements.txt,观察格式:
Flask==2.3.2
格式:包名==版本号
注释掉的是说明,真实文件不应有中文注释
Flask==2.3.2
Flask-SQLAlchemy==3.0.5
Flask-Migrate==4.0.5
Flask-Login==0.6.2
Flask-WTF==1.1.1
email-validator==2.0.0
2.4 运行结果
成功运行Flasky后的输出:
* Tip: There's a fully-integrated Python debugger in the IDE.
Just PyDev breakpoints will work.
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with reloader
打开浏览器访问 http://127.0.0.1:5000/ ,应该能看到一个包含用户管理功能的Web应用。
第三部分:课堂练习(15分钟)
练习1:环境搭建挑战
目标:从零开始搭建一个Flask开发环境
要求:
在用户主目录下创建项目文件夹myproject
在myproject中创建虚拟环境venv
激活虚拟环境
安装Flask和Flask-SQLAlchemy
验证安装成功(能导入两个库)
导出requirements.txt
退出虚拟环境
检查点:
目录结构正确
虚拟环境激活成功(命令行有venv提示符)
能成功导入flask和flask_sqlalchemy
requirements.txt文件存在且格式正确
练习2:依赖管理实践
目标:练习依赖的安装、导出、卸载
要求:
在虚拟环境中安装requests库:pip install requests
使用pip freeze查看所有已安装包
使用pip freeze > requirements.txt导出依赖
卸载requests:pip uninstall requests
使用pip install -r requirements.txt重新安装(验证可恢复)
观察requirements.txt中是否有requests
思考题:为什么卸载requests后,requirements.txt仍然包含它?
常见错误与调试
错误1:python3命令不存在
bash: python3: command not found
解决方法:
Ubuntu安装Python 3
sudo apt-get update
sudo apt-get install python3 python3-pip python3-venv
macOS安装(使用Homebrew)
brew install python3
错误2:venv创建失败
Error: Command ''/path/to/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'' failed with error code 1
解决方法:系统缺少python3-venv包
Ubuntu
sudo apt-get install python3-venv python3-full
错误3:权限拒绝(Permission denied)
PermissionError: Errno 13 Permission denied: '/usr/lib/python3/site-packages'
原因:试图在全局环境安装包,而当前用户没有权限
解决方法:使用虚拟环境!这就是为什么我们坚持每个项目使用独立虚拟环境。
错误4:pip版本过旧
pip is configured with locations that require TLS/SSL
解决方法:升级pip
pip install --upgrade pip
课后作业
基础作业(必做)
环境重建练习
在自己的电脑上完成Flask开发环境搭建
截图或记录每一步的输出
提交:环境搭建步骤文档
requirements.txt实践
创建一个新的Flask项目环境
安装Flask及任意3个扩展(如Flask-Login, Flask-WTF, requests)
生成requirements.txt
删除虚拟环境,重新创建并安装所有依赖
验证项目能正常运行
提交:requirements.txt文件
提高作业(选做)
虚拟环境原理探究
对比venv创建的环境和系统Python环境
找出venv中python命令和系统python3命令的区别
提交:对比分析报告
GitHub项目调研
在GitHub上搜索5个Flask示例项目
分析它们的requirements.txt
总结Flask项目常用的扩展有哪些
提交:调研报告
知识扩展
扩展1:virtualenv vs venv 对比
虽然venv是官方推荐,但在某些场景下virtualenv仍有优势:
特性 venv virtualenv
依赖Python版本 Python 3.3+ Python 2.7+ / 3.3+
需要安装 内置,无需安装 需要pip安装
创建速度 较快 较慢(可配置)
清理符号链接 自动 需要--clear标志
复制环境 不支持 支持--relocatable
扩展2:conda环境管理
对于数据科学项目,很多人使用conda代替venv:
创建conda环境
conda create --name myproject python=3.11
激活环境
conda activate myproject
安装包
conda install flask numpy pandas
扩展3:pipenv和Poetry
现代Python项目推荐使用更高级的依赖管理工具:
pipenv:pip + 虚拟环境一体化
pip install pipenv
pipenv install flask
pipenv shell # 自动激活环境
Poetry:更现代的依赖管理
pip install poetry
poetry init
poetry add flask
poetry shell
本课小结
第1课时:虚拟环境详解
知识点 掌握程度
虚拟环境概念 理解其"隔离"本质
venv创建和激活 能独立操作
为什么要用虚拟环境 能说出版本冲突场景
第2课时:Flask安装与项目初始化
知识点 掌握程度
Flask核心依赖 知道Werkzeug和Jinja2
pip常用命令 install, freeze, uninstall
requirements.txt 能编写标准格式文件
克隆运行项目 能运行Flasky示例
核心准则
黄金法则:每个Flask项目使用独立的虚拟环境,永不污染全局Python环境。
参考答案(练习代码)
练习1参考命令序列
完整操作序列
cd ~
mkdir myproject
cd myproject
python3 -m venv venv # 创建虚拟环境
source venv/bin/activate # 激活(Linux/macOS)
venv\Scripts\activate # 激活(Windows)
pip install flask flask-sqlalchemy # 安装包
python -c "import flask; import flask_sqlalchemy; print('OK')" # 验证
pip freeze > requirements.txt # 导出
deactivate # 退出
练习2参考
思考题答案:因为pip freeze会列出当前虚拟环境中所有已安装的包。卸载requests后再次freeze,requirements.txt应该已经不包含requests了。这说明pip freeze是动态反映当前状态的。
关键概念速查表
概念 说明 命令
venv Python 3内置虚拟环境模块 python3 -m venv <name>
pip Python包管理器 pip install <package>
requirements.txt 项目依赖清单文件 pip freeze > requirements.txt
WSGI Web Server Gateway Interface标准 Flask遵循的接口规范
site-packages pip安装第三方包的目录 虚拟环境中独立存在
activate 激活虚拟环境的脚本 source venv/bin/activate
deactivate 退出虚拟环境 deactivate