部署方案
Python 版本繁多, Python 应用需要依赖一些包,版本也不尽相同。如果在系统级 Python 环境部署应用,可以预想到,一定存在冲突风险。试想一下场景:
应用 A 、 B 均依赖一个数据库连接包,版本分别是 a 和 b ,两个版本有些不兼容。如果两个应用部署在同个 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
小技巧
用 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
小技巧
应用在 requirements.txt 配置文件维护所有依赖包及版本并通过 pip 命令安装。
下一步
订阅更新,获取更多学习资料,请关注我们的 微信公众号 :