Flask安装与虚拟环境

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