前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Virtualenv&Flask 入门

Virtualenv&Flask 入门

原创
作者头像
HLee
修改2021-06-02 15:00:23
5000
修改2021-06-02 15:00:23
举报
文章被收录于专栏:房东的猫房东的猫

简介

Flask 依赖两个外部库:WerkzeugJinja2 。 Werkzeug 是一个 WSGI(在 Web 应用和多种服务器之间的标准 Python 接口) 工具集。Jinja2 负责渲染模板。

那么如何在你的电脑上安装这一切?虽说条条大道通罗马,但是最强大的方式是 virtualenv ,所以我们首先来看它。

你首先需要 Python 2.6 或更高的版本,所以请确认有一个最新的 Python 2.x 安装。 在 Python 3 中使用 Flask 请参考: Python 3 支持

Virtualenv

动态语言Ruby、Python都有自己的虚拟环境,虚拟环境是程序执行时的独立执行环境,在同一台服务器中可以创建不同的虚拟环境供不同的系统使用,项目之间的运行环境保持独立性而相互不受影响。例如项目可以在基于Python2的环境中运行,而项目B可以在基于Python3的环境中运行。Python通virtualenv工具管理虚拟环境。

virtualenv 解决了什么问题?如果你像我一样喜欢 Python,不仅会在采用 Flask 的Web 应用中用上 virtualenv,在别的项目中你也会想用上它。你拥有的项目越多,同时使用不同版本的 Python 工作的可能性也就越大,或者起码需要不同版本的 Python 库。悲惨现实是:常常会有库破坏向后兼容性,然而正经应用不采用外部库的可能微乎其微。当在你的项目中,出现两个或更多依赖性冲突时,你会怎么做?

virtualenv 拯救世界!virtualenv 为每个不同项目提供一份 Python 安装。它并没有真正安装多个 Python 副本,但是它确实提供了一种巧妙的方式来让各项目环境保持独立。让我们来看看 virtualenv 是怎么工作的。

安装virtualenv

  • pip list
代码语言:javascript
复制
lihuandeMacBook-Pro:~ lihuan$ pip list
Package      Version
------------ -------
appdirs      1.4.4
click        7.1.2
distlib      0.3.1
filelock     3.0.12
Flask        1.1.2
itsdangerous 1.1.0
Jinja2       2.11.3
MarkupSafe   1.1.1
pip          21.0.1
setuptools   41.2.0
six          1.15.0
virtualenv   20.4.2
Werkzeug     1.0.1
lihuandeMacBook-Pro:~ lihuan$ pip3 list
Package      Version
------------ -------
appdirs      1.4.4
click        7.1.2
distlib      0.3.1
filelock     3.0.12
Flask        1.1.2
itsdangerous 1.1.0
Jinja2       2.11.3
MarkupSafe   1.1.1
pip          21.0.1
setuptools   41.2.0
six          1.15.0
virtualenv   20.4.2
Werkzeug     1.0.1
lihuandeMacBook-Pro:~ lihuan$ 
  • 安装 virtualenv 之前需要先确认是否安装好 python 和 pip
代码语言:javascript
复制
lihuandeMacBook-Pro:~ lihuan$ python -V
Python 2.7.16
lihuandeMacBook-Pro:~ lihuan$ pip -V
pip 21.0.1 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
  • pip安装virtualenv
代码语言:javascript
复制
pip install virtualenv
# 或者
pip3 install virtualenv

lihuandeMacBook-Pro:~ lihuan$ virtualenv --version
virtualenv 20.4.2 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/virtualenv/__init__.py
lihuandeMacBook-Pro:~ lihuan$ 

使用virtualenv

  • 创建virtualenvs文件夹
代码语言:javascript
复制
# 创建一个文件夹用来存放各个环境的相关文件
mkdir virtualenvs
cd virtualenvs
  • 创建虚拟环境

创建一个名称为 test_env 的不带任何第三方包的独立的Python运行环境

代码语言:javascript
复制
方法一:
virtualenv test_env
方法二:
mkdir test_env
cd test_env
virtualenv .

lihuandeMacBook-Pro:virtualenvs lihuan$ virtualenv test_env
created virtual environment CPython3.8.3.final.0-64 in 731ms
  creator CPython3Posix(dest=/Users/lihuan/Documents/projects/python/master/virtualenvs/test_env, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/lihuan/Library/Application Support/virtualenv)
    added seed packages: pip==21.0.1, setuptools==52.0.0, wheel==0.36.2
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
  • 进入虚拟环境
代码语言:javascript
复制
# 进入环境
source test_env/bin/activate

lihuandeMacBook-Pro:virtualenvs lihuan$ source test_env/bin/activate
(test_env) lihuandeMacBook-Pro:virtualenvs lihuan$ 

(test_env) lihuandeMacBook-Pro:virtualenvs lihuan$ python
Python 3.8.3 (v3.8.3:6f8c8320e9, May 13 2020, 16:29:34) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

备注:目录说明
bin,存放了当前Python运行环境的Python解释器(bin/python),以及可执行命令(例如pip,easy_install);
test_env/lib/python*.*/site-packages,安装的python库存放在这个目录下。
  • 安装软件包

为环境安装软件包

代码语言:javascript
复制
(test_env) lihuandeMacBook-Pro:virtualenvs lihuan$ pip install requests
Collecting requests
  Downloading requests-2.25.1-py2.py3-none-any.whl (61 kB)
     |████████████████████████████████| 61 kB 712 kB/s 
Collecting chardet<5,>=3.0.2
  Downloading chardet-4.0.0-py2.py3-none-any.whl (178 kB)
     |████████████████████████████████| 178 kB 1.2 MB/s 
Collecting urllib3<1.27,>=1.21.1
  Downloading urllib3-1.26.3-py2.py3-none-any.whl (137 kB)
     |████████████████████████████████| 137 kB 227 kB/s 
Collecting idna<3,>=2.5
  Downloading idna-2.10-py2.py3-none-any.whl (58 kB)
     |████████████████████████████████| 58 kB 2.2 MB/s 
Collecting certifi>=2017.4.17
  Downloading certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
     |████████████████████████████████| 147 kB 2.3 MB/s 
Installing collected packages: urllib3, idna, chardet, certifi, requests
Successfully installed certifi-2020.12.5 chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.3
(test_env) lihuandeMacBook-Pro:virtualenvs lihuan$ 
  • 退出当前虚拟环境
代码语言:javascript
复制
(test_env) lihuandeMacBook-Pro:virtualenvs lihuan$ deactivate

Flask

Flask 的设计易于使用和扩展。它的初衷是为各种复杂的Web应用程序构建坚实的基础。可以自由地插入任何扩展。也可以自由构建自己的模块。Flask 适合各种项目。它对原型设计特别有用。Flask 依赖于两个外部库:Jinja2 模板引擎和 Werkzeug WSGI 工具包。 Flask 是最精致,功能最丰富的微框架之一。Flask 还很年轻,拥有蓬勃发展的社区,一流的扩展和漂亮的 API。Flask 具有快速模板,强大的 WSGI 功能,在 Web 应用程序和库级别的完整单元可测性,以及大量文档等优点。 选用 Flask 框架也是因为它方便入手,结构简单,零配置,是个学习 Python Web 开发的好工具。

安装virtualenv

代码语言:javascript
复制
pip3 install virtualenv

安装Flask

代码语言:javascript
复制
lihuandeMacBook-Pro:master lihuan$ pip3 install flask
Collecting flask
  Downloading https://files.pythonhosted.org/packages/f2/28/2a03252dfb9ebf377f40fba6a7841b47083260bf8bd8e737b0c6952df83f/Flask-1.1.2-py2.py3-none-any.whl (94kB)
     |████████████████████████████████| 102kB 905kB/s 
Collecting click>=5.1 (from flask)
  Downloading https://files.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl (82kB)
     |████████████████████████████████| 92kB 3.3MB/s 
Collecting Jinja2>=2.10.1 (from flask)
  Downloading https://files.pythonhosted.org/packages/7e/c2/1eece8c95ddbc9b1aeb64f5783a9e07a286de42191b7204d67b7496ddf35/Jinja2-2.11.3-py2.py3-none-any.whl (125kB)
     |████████████████████████████████| 133kB 289kB/s 
Collecting Werkzeug>=0.15 (from flask)
  Downloading https://files.pythonhosted.org/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl (298kB)
     |████████████████████████████████| 307kB 2.6MB/s 
Collecting itsdangerous>=0.24 (from flask)
  Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10.1->flask)
  Downloading https://files.pythonhosted.org/packages/0c/12/37f68957526d1ec0883b521934b4e1b8ff3dd8e4fab858a5bf3e487bcee9/MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl
Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, flask
Successfully installed Jinja2-2.11.3 MarkupSafe-1.1.1 Werkzeug-1.0.1 click-7.1.2 flask-1.1.2 itsdangerous-1.1.0
WARNING: You are using pip version 19.2.3, however version 21.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
lihuandeMacBook-Pro:master lihuan$ 

查看Flask

代码语言:javascript
复制
lihuandeMacBook-Pro:master lihuan$ pip3 list
Package      Version
------------ -------
click        7.1.2  
Flask        1.1.2  
itsdangerous 1.1.0  
Jinja2       2.11.3 
MarkupSafe   1.1.1  
pip          19.2.3 
setuptools   41.2.0 
Werkzeug     1.0.1  
WARNING: You are using pip version 19.2.3, however version 21.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
lihuandeMacBook-Pro:master lihuan$ 

验证Flask

代码语言:javascript
复制
Python 3.8.3 (v3.8.3:6f8c8320e9, May 13 2020, 16:29:34) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license()" for more information.
>>> import flask
>>> 

导入Flask

Pycharm引入Flask模块,选择安装即可成功导入。

代码语言:javascript
复制
from flask import Flask  # 引入Flask模块

使用Flask

最简单的Web应用 hello.py

代码语言:javascript
复制
from flask import Flask  # 引入Flask模块

app = Flask(__name__)  # 创建一个应用


@app.route('/')
def index():  # 定义根目录处理器
    return '<h1>Hello World!</h1>'


if __name__ == '__main__':
    app.run()  # 启动服务

使用pycharm启动,如果一起正常的话会有类似下面的反馈

代码语言:javascript
复制
* Serving Flask app "hello" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

因为是通过 app.run() 启动的服务,所以会有个错误提示,提醒不能将此Web应用部署在生产环境中,可以暂时忽略

此时,打开浏览器,输入127.0.0.1:5000/ 或者 localhost:5000/, 就可以看到 Hello World! 欢迎字样。

代码语言:javascript
复制
127.0.0.1 - - [12/Mar/2021 19:11:12] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [12/Mar/2021 19:11:12] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [12/Mar/2021 19:11:16] "GET / HTTP/1.1" 200 -

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • Virtualenv
    • 安装virtualenv
      • 使用virtualenv
      • Flask
        • 安装virtualenv
          • 安装Flask
            • 查看Flask
              • 验证Flask
                • 导入Flask
                  • 使用Flask
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档