部署方案

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

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

独立部署环境

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

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

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

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

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

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

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

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

  1. $ virtualenv -p python3 ~/python3

小技巧

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

依赖管理

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

  1. $ pip install Flask

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

  1. $ pip install Flask==1.0.2

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

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

  1. Flask==1.0.2
  2. Jinja2==2.10

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

  1. $ pip install -r requirements.txt

小技巧

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

下一步

订阅更新,获取更多学习资料,请关注我们的 微信公众号

../_images/wechat-mp-qrcode.png小菜学编程

微信打赏