pipenv创建flask开发环境

Pipenv是基于pip的Python包管理工具,它和pip的用法非常相似,可以看作pip的加强版,它的出现解决了旧的pip+virtualenv+requirements.txt的工作方式的弊端。具体来说,它是pip、Pipfile和 Virtualenv 的结合体,它让包安装、包依赖管理和虚拟环境管理更加方便,使用它可以实现高效的 Python项目开发工作流。如果你还不熟悉这些工具,不用担心,我们会在下面逐一进行介绍。

1. 安装pip和Pipenv

pip是用来安装Python包的工具。如果你使用Python2.7.9及以上版本或Python3.4及以上版本,那么pip已经安装好了。可以使用下面的命令检查pip是否已经安装:$ pip --version, 如果报错,那么你需要自己安装pip。最简单的方式是下载并使用Python执行get-pip.py文件https://bootstrap.pypa.io/get-pip.py

下面这条命令你经常在各种文档中见到: $ pip install <某个包的名称>这会从PyPI(Python Package Index,Python包索引)上下载并 安装指定的包。

PyPI(https://pypi.org) 是一个Python包的在线仓库,截至2018年5月,共有13万多个包存储在这里。后面我们会学习如何编写自己的Flask扩展,并把它上传到PyPI上。到时你就可以使用上面这条命令安装自己编写的包。

现在使用pip安装Pipenv:

$ pip install pipenv 

在Linux或macOS系统中使用sudo以全局安装:

$ sudo -H pip install pipenv`

你也可以使用--user选项进行用户安装(即 pip install --user pipenv)。用户安装可以避免破坏全局的包,而且可以避免对不可信的包使用sudo pip导致的潜在安全问题。

2. 创建虚拟环境

在Python中,虚拟环境(virtual enviroment)就是隔离的Python解释器环境。通过创建虚拟环境,你可以拥有一个独立的Python解释器环境。这样做的好处是可以为每一个项目创建独立的 Python解释器环境,因为不同的项目常常会依赖不同版本的库或Python版本。使用虚拟环境可以 保持全局Python解释器环境的干净,避免包和版本的混乱,并且可以方便地区分和记录每个项目 的依赖,以便在新环境下复现依赖环境。

虚拟环境通常使用Virtualenv来创建,但是为了更方便地管理虚拟环境和依赖包,我们将会使用 集成了Virtualenv的Pipenv。首先确保我们当前工作目录在项目的根目录(假设为E:\mytest),然后使用pipenv install命令为当前的项目创建虚拟环境:

$ pipenv install

这会为当前项目创建一个文件夹,其中包含隔离的Python解释器环境,并且安装pip、wheel、 setuptools等基本的包。

默认情况下,Pipenv会统一管理所有虚拟环境。在Windows系统中,虚拟环境文件夹会在C:\ Users\Administrator\.virtualenvs\目录下创建,而Linux或macOS会在~/.local/share/ virtualenvs/目录下创建。如果你想在项目目录内创建虚拟环境文件夹,可以设置环境变量 PIPENV_VENV_IN_PROJECT,这时名为.venv的虚拟环境文件夹将在项目根目录被创建。

你可以通过--three--two选项来声明虚拟环境中使用的Python版本(分别对应Python3和 Python2),或是使用--python选项指定具体的版本号。同时要确保对应版本的Python已经安装 在电脑中。在单独使用Virtualenv时,我们通常会显式地激活虚拟环境。在Pipenv中,可以使用 pipenv shell 命令显式地激活虚拟环境:

$ pipenv shell

当执行pipenv shellpipenv run 命令时,Pipenv会自动从项目目录下的.env文件中加载 环境变量。

Pipenv会启动一个激活虚拟环境的子shell,现在你会发现命令行提示符前添加了虚拟环境名“( 虚拟环境名称)$”。

除了显式地激活虚拟环境,Pipenv还提供了一个pipenv run命令,这个命令允许你不显式激活虚拟环境即可在当前项目的虚拟环境中执行命令,比如:

$ pipenv run python hello. py

3. 管理依赖

一个程序通常会使用很多的Python包,即依赖(dependency)。而程序不仅仅会在一台电脑上运行,程序部署上线时需要安装到远程服务器上,而你也许会把它分享给朋友。如果你打算开源的 话,就可能会有更多的人需要在他们的电脑上运行。为了能顺利运行程序,他们不得不记下所有 依赖包,然后使用pip或Pipenv安装,这些重复无用的工作当然应该避免。在以前我们通常使用 pip搭配一个requirements.txt文件来记录依赖。但requirements.txt需要手动维护,在使用上不够灵活。Pipfile的出现就是为了替代难于管理的requirements. txt。

在创建虚拟环境时,如果项目根目录下没有Pipfile文件,pipenv install命令还会在项目文件夹根目录下创建Pipfile和Pipfile.lock文件,前者用来记录项目依赖包列表,而后者记录了固定 版本的详细依赖包列表。当我们使用Pipenv安装/删除/更新依赖包时,Pipfile以及Pipfile.lock 会自动更新。

你可以使用pipenv graph命令查看当前环境下的依赖情况,或是在虚拟环境中使用pip list命令查看依赖列表。

当需要在一个新的环境运行程序时,只需要执行pipenv install命令。Pipenv就会创建一个新的虚拟环境,然后自动从Pipfile中读取依赖并安装到新创建的虚拟环境中。

4. 安装Flask

下面使用pipenv install命令在我们刚刚创建的虚拟环境里安装Flask:

$ pipenv install flask

后面我们都将使用Pipenv安装包,这相当于在激活虚拟环境的情况下使用pip安装包。只有需要 在全局环境下安装/更新/删除包,我们才会使用pip。

$ pipenv update flask

使用上面的命令更新flask。

如果你手动使用pip和virtualenv管理包和虚拟环境,可以使用--upgrade-U 选项(简写 时U为大写)来更新包版本: pip install- U< 包 名称>

安装flask后,在根目录下新建一个python文件,如app.py,代码如下:

from flask import Flask 
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello Flask!</h1>'

然后,运行

$ flask run

出现如下所示:

 * 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)

用浏览器打开http://127.0.0.1:5000/,可以看到Hello Flask!

本文参考《Flask Web开发实践》李辉<著>,仅供学习参考,详细更多内容请购买原书查阅。

0 条评论 最新

还没有评论哦.