一. 初识Flask
Flask的核心即简单且易于扩展,所以被称为微框架。Flask有3个主要依赖:
- Werkzeug:提供路由、调试和WEB服务网关接口(WSGI)子系统;
- Jinjia2:模板引擎;
- Click:命令行集成;
Flask只保留了WEB开发的核心,其他的功能都有外部扩展来实现,如数据库集成、表单验证,用户身份验证等。(备注:WSGI是Python中用来规定WEB服务器如何与python web应用进行沟通的标准)
二. 搭建开发环境
2.1 虚拟环境
虚拟环境是python解释器的一个私有副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局python解释器。这样做的好处:
- 为每个项目单独创建虚拟环境,可以保证应用只能访问所在虚拟环境中的包,从而保证全局解释器的干净整洁,使其只作为创建更多虚拟环境的源;
- 使用虚拟环境不需要管理员权限。
2.2 创建和使用虚拟环境
2.2.1 pip工作流
- 创建虚拟环境:python3和python2创建虚拟环境的方法有所不同:
- python3中虚拟环境由标准库中的ven包原生支持:python3 -m venv venv(虚拟环境的名称)。通常虚拟环境的名称为venv,上述命令执行完毕后,项目目录中会出现一个名为venv的子目录,这里就是一个全新的虚拟环境,包含这个项目专用的Python解释器。
- python2没有集成venv包,这一版python解释器要使用第三方工具virtualenv创建虚拟环境:sudo pip install virtualenv + virtualenv venv;
- 激活虚拟环境:
- source venv/bin/active(Linux) + venv\Scripts\active(windows)
- 输入deactive退出虚拟环境,即还原当前终端会话的PATH环境变量。
- 使用pip安装包:
- python包使用包管理器pip安装,所有虚拟环境中都有这个工具
- 使用豆瓣镜像安装:pip install flask -i https://pypi.douban.com/simple
- pip freeze > requirements.txt 生成需求文件
- pip install -r requirements.txt 安装requirements.txt列出的依赖包
2.2.2 Pipenv工作流
Pipenv是基于pip的python包管理工具,它的用法与pip相似,可以看作是pip的加强版,它的出现解决了旧的pip + virtualenv + requirements.txt的工作方式的弊端,使得包安装、包依赖管理和虚拟环境管理更加方便:
- 安装Pipenv:pip install pipenv -i https://pypi.douban.com/simple
- 执行pipenv install:会为当前项目创建一个文件夹,该文件夹包含
- 隔离的python解释器环境,并安装pip、wheel、setuptools等基本包;
- 如果项目中包含Pipfile文件,其中的依赖包也会被一并安装。
- 默认情况下pipenv会同一管理所有虚拟环境,虚拟环境文件夹会在在C:\Users\Administrator\.virtualenvs\(Linux:~/.local/share/virtualenvs/)。若想在项目目录内创建虚拟环境文件夹,可以添加环境变量WORKON_HOME=PIPENV_VENV_IN_PROJECT。
- pipenv shell:激活虚拟环境
- pipenv run python hello.py:使用当前项目的虚拟环境运行hello.py程序。
2.2.3 总结
在以前我们通常使用pip搭配一个requirements.txt文件来记录 依赖。但requirements.txt需要手动维护,在使用上不够灵活。Pipfile的出 现就是为了替代难于管理的requirements.txt。
在创建虚拟环境时,如果项目根目录下没有Pipfile文件,pipenv install命令还会在项目文件夹根目录下创建Pipfile和Pipfile.lock文件,前 者用来记录项目依赖包列表,而后者记录了固定版本的详细依赖包列 表。当我们使用Pipenv安装/删除/更新依赖包时,Pipfile以及Pipfile.lock 会自动更新。
当需要在一个新的环境运行程序时,只需要执行pipenv install命令。Pipenv就会创建一个新的虚拟环境,然后自动从Pipfile中读取依赖并安装到新创建的虚拟环境中。
Pipenv会自动帮我们管理虚拟环境,所以在执行pipenv install安装Python包时,无论是否激活虚拟环境,包都会安装到虚拟环境中。后面 我们都将使用Pipenv安装包,这相当于在激活虚拟环境的情况下使用pip安装包。只有需要在全局环境下安装/更新/删除包,我们才会使用pip。
三. Flask依赖包
pipenv install flask后,除了Flask包外,同时被安装的还有5个依赖包:
- Jinjia2:模板渲染引擎
- MarkupSafe:HTML字符转义工具
- Werkzeug:WSGI工具集,处理请求与响应、内置WSGI开发服务器、调试器和重载器;
- click:命令行工具
- itsdangerous:提供各种加密签名功能