Ubuntu Linux 最新的长期支持(LTS)操作系统版本为 18.04,于 2018 年 4 月发布。18.04 更新代号为“Bionic Beaver”,默认包含 Python 3。但是,您需要安装大量依赖项才能将此版本设置为开发环境。
在本教程中,我们将使用配置了开发系统包的 Python 3.6 来启动一个新的 Flask Web 应用程序项目并使用 Green Unicorn (Gunicorn) 运行它。
我们的工具
我们的项目将使用 Ubuntu 18.04 版本以及一些其他库。请注意,如果您使用的是较旧的 16.04 LTS 版本,还有一个指南将指导您将该版本设置为您的开发环境。
在逐步完成本教程的其余部分时,我们将安装以下工具:
- Ubuntu 18.04 LTS (Bionic Beaver)
- Python version3.6.5(Ubuntu 18.04 默认)
- Flask web framework version1.0.2
- 绿独角兽(Gunicorn)版本19.8.1
如果您在 Mac OS X 或 Windows 上运行,请使用带有 Ubuntu .iso 文件的虚拟化软件,例如 Parallels 或 VirtualBox。 18.04 的 amd64 ori386 版本都可以。我在本教程中使用 amd64 进行开发和测试。
当您启动到 Ubuntu 桌面时,您应该会看到这样的屏幕。
我们已准备好配置开发环境。
系统包
打开终端窗口以继续设置。
使用下面两条命令查看安装的是哪个版本的Python 3
python3 --version which python3
Python版本应为3.6.5,位置/usr/bin/python3
。
我们的 Ubuntu 安装需要一些系统包来进行开发,而不仅仅是运行 Python 脚本。运行以下 apt-get
命令并输入您的 sudo
密码以允许受限的系统访问。
sudo apt-get install python3-dev python3-pip python3-virtualenv
我们应该看到以下提示请求 sudo
访问权限。输入y
让系统包管理器完成安装。
Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: linux-headers-4.15.0-20 linux-headers-4.15.0-20-generic linux-image-4.15.0-20-generic linux-modules-4.15.0-20-generic linux-modules-extra-4.15.0-20-generic Use 'sudo apt autoremove' to remove them. The following additional packages will be installed: dh-python libexpat1-dev libpython3-dev libpython3.6-dev python3-setuptools python3-wheel python3.6-dev Suggested packages: python-setuptools-doc The following NEW packages will be installed: dh-python libexpat1-dev libpython3-dev libpython3.6-dev python3-dev python3-pip python3-setuptools python3-virtualenv python3-wheel python3.6-dev 0 upgraded, 10 newly installed, 0 to remove and 11 not upgraded. Need to get 3,617 kB/3,661 kB of archives. After this operation, 20.2 MB of additional disk space will be used. Do you want to continue? [Y/n]
包管理器会做脏活,并且应该在安装成功完成时报告。
(...clipped a bunch of installation lines for brevity...) Unpacking python3-wheel (0.30.0-0.2) ... Setting up python3-wheel (0.30.0-0.2) ... Setting up python3-virtualenv (15.1.0+ds-1.1) ... Setting up python3-pip (9.0.1-2.3~ubuntu1) ... Setting up libexpat1-dev:amd64 (2.2.5-3) ... Processing triggers for man-db (2.8.3-2) ... Setting up python3-setuptools (39.0.1-2) ... Setting up dh-python (3.20180325ubuntu2) ... Setting up libpython3.6-dev:amd64 (3.6.5-3) ... Setting up python3.6-dev (3.6.5-3) ... Setting up libpython3-dev:amd64 (3.6.5-3) ... Setting up python3-dev (3.6.5-3) ...
我们需要的包现在已经安装好了。我们可以继续安装特定于 Python 的依赖项。
虚拟环境
我们安装了 virtualenvand pip 来处理我们的应用程序依赖项。我们现在可以使用它们来下载和安装 Flask 和 Gunicorn。
创建一个目录来存储你的虚拟环境。然后在该目录中创建一个新的 virtualenv。
# make sure pip and setuptools are the latest version
pip3 install --upgrade pip setuptools
# the tilde ("~") specifies the user's home directory, such as "/home/matt"
cd ~
mkdir venvs
# specify the system python3 installation
python3 -m venv venvs/flask1804
激活虚拟环境。
source ~/venvs/flask1804/bin/activate
当virutalenv被激活时,我们的提示会改变。
我们的 virtualenv 现在已使用 Python 3 激活。我们可以安装我们需要的任何依赖项,例如 Flask 和 Gunicorn。
Flask 和 Gunicorn
我们将在新的 virtualenv 中使用 pip
,但最好将其更新到最新版本。我们还应该安装 wheel
包以在 pip
尝试使用 Python wheels 时删除安装警告,Python wheels 是一长串公认的 Python 分发包模型中的最新标准。
pip install --upgrade pip pip install wheel
我们现在可以通过 pip
命令安装 Flask 和 Green Unicorn。
pip install flask gunicorn
查找类似于以下内容的输出以确保库安装没有问题。
(flask1804) [email protected]:~$ pip install flask gunicorn Collecting flask Using cached https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl Collecting gunicorn Using cached https://files.pythonhosted.org/packages/55/cb/09fe80bddf30be86abfc06ccb1154f97d6c64bb87111de066a5fc9ccb937/gunicorn-19.8.1-py2.py3-none-any.whl Collecting click>=5.1 (from flask) Using cached https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl Collecting Werkzeug>=0.14 (from flask) Using cached https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl Collecting itsdangerous>=0.24 (from flask) Using cached https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz Collecting Jinja2>=2.10 (from flask) Using cached https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask) Using cached https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz Building wheels for collected packages: itsdangerous, MarkupSafe Running setup.py bdist_wheel for itsdangerous ... done Stored in directory: /home/matt/.cache/pip/wheels/2c/4a/61/5599631c1554768c6290b08c02c72d7317910374ca602ff1e5 Running setup.py bdist_wheel for MarkupSafe ... done Stored in directory: /home/matt/.cache/pip/wheels/33/56/20/ebe49a5c612fffe1c5a632146b16596f9e64676768661e4e46 Successfully built itsdangerous MarkupSafe Installing collected packages: click, Werkzeug, itsdangerous, MarkupSafe, Jinja2, flask, gunicorn Successfully installed Jinja2-2.10 MarkupSafe-1.0 Werkzeug-0.14.1 click-6.7 flask-1.0.2 gunicorn-19.8.1 itsdangerous-0.24
在您的主目录下创建一个名为 flask1804
的新目录(不在 venvs
子目录中),它将存储我们的 Flask 测试项目。将目录更改为新目录文件夹。
mkdir ~/flask1804 cd ~/flask1804
在我们的 __init__.py
目录中创建一个名为 flaskproj
的新文件,以便我们进行测试以确保 Flask 正常工作。我通常使用 Vim,但 Emacs 和其他开发环境也能很好地工作。
在 __init__.py
中编写以下代码。
from flask import Flask, Response
app = Flask(__name__)
@app.route("/")
def index():
return Response("It works!"), 200
if __name__ == "__main__":
app.run(debug=True)
我们可以使用 python __init__.py
命令在 Flask 开发服务器上运行我们的应用程序。而是使用 Gunicorn 运行 Flask 应用程序。转到flask1804
文件夹上面的目录,在我们的例子中我们可以输入cd ~
然后使用gunicorn
命令:
gunicorn flask1804.app:app
我们应该看到:
[2018-06-15 15:54:31 -0400] [5174] [INFO] Starting gunicorn 19.8.1 [2018-06-15 15:54:31 -0400] [5174] [INFO] Listening at: http://127.0.0.1:8000 (5174) [2018-06-15 15:54:31 -0400] [5174] [INFO] Using worker: sync [2018-06-15 15:54:31 -0400] [5177] [INFO] Booting worker with pid: 5177
太棒了,现在我们可以在网络浏览器中的 localhost:8000
或 127.0.0.1:8000
地址启动我们的 shell Flask 应用程序。
现在您已准备好进行一些真正的 Flask 开发!
准备编码
这为开始使用 18.04 LTS 使用 Gunicorn WSGI 服务器开发 Flask 应用程序提供了快速配置。
接下来您应该查看以下使用此 Flask 配置的教程:
- 使用 Python 和 Flask 响应 SMS 文本消息
- 如何将托管监控添加到 Flask Web 应用程序)
或者,您还可以通过阅读完整堆栈 Python 目录页面来确定您的 Python 项目中接下来要编码的内容。
有问题吗?通过 Twitter@fullstackpython 或@mattmakai 与我联系。我也在 GitHub 上,用户名是 mattmakai。
这篇文章有问题吗?在 GitHub 上创建此页面的源代码并提交拉取请求。