部署方案

Python 版本繁多, Python 应用需要依赖一些包,版本也不尽相同。 如果在系统级 Python 环境部署应用,可以预想到,一定存在冲突风险。 试想一下场景:

应用 AB 均依赖一个数据库连接包,版本分别是 ab ,两个版本有些不兼容。 如果两个应用部署在同个 Python 环境,那么数据库包应该安装什么版本呢?

独立部署环境

问题只能通过部署独立的 Python 环境来解决。那么同台机器如何部署多个 Python 环境呢? 甚至是版本不同的 Python 环境?—— virtualenv

首先,初始化一个新的 Python 环境:

$ virtualenv ~/python
New python executable in /Users/fasion/python/bin/python
Installing setuptools, pip, wheel...done.

完成之后,便可启动 Python 解析器了:

$ ~/python/bin/python
Python 3.6.4 (default, Jan  6 2018, 11:51:59)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print('abc')
abc
>>>

自然也可以用这个独立的环境来跑应用了:

$ ~/python/bin/python /some/path/to/app.py

当然了,也可以指定 Python 版本:

$ virtualenv -p python3 ~/python3

Tip

virtualenv 制作独立的 Python 环境,对其任何操作均不影响其他环境。

依赖管理

Python 通过 pip 命令安装依赖包,大家应该都知道:

$ pip install Flask

依赖包版本也很重要,用了错误版本的包可能导致应用异常。保险起见,装包时指定版本:

$ pip install Flask==1.0.2

每次部署应用时,检查所有依赖包及版本是否就绪。 方法非常简单,直接运行装包命令即可。 pip 将确保依赖包以指定版本安装。

此外,最好可以通过配置文件将所有依赖保存下来。 pip 命令也支持依赖配置文件 requirements.txt ,内容格式如下:

Flask==1.0.2
Jinja2==2.10

这样一来,一个命令就可以完成所有依赖包的安装:

$ pip install -r requirements.txt

Tip

应用在 requirements.txt 配置文件维护所有依赖包及版本并通过 pip 命令安装。

下一步

订阅更新,获取更多学习资料,请关注我们的 wechat-mp

../_images/wechat-mp-qrcode.png

小菜学编程

微信打赏