最近因工作需要,研究了一款Python项目。作为java程序猿,习惯于java项目一个包就可以在任何平台上运行,因此在研究该项目伊始,本着也能够将Python项目打包部署的期望,研究了下python项目部署方法。
一般情况,安装Python模块都会用到setuptools模块。它提供了Python模块的构建、编译、打包、安装等功能。在联网环境时,调用模块的setup.py脚本执行安装时,会自动下载安装依赖模块。
大多数还是使用pip安装。pip模块是python的模块管理工具。pip安装时会去pip源服务器上下载相关模块,自动安装到本地。这里需要一个pip源,默认的pip源配置是pypi源,也可以自己搭建一个pip源服务器,将依赖的模块存放在pip源服务器上。
如果我们的实际环境中无法联网,且没有资源来运行和维护pip源服务器,这时候就需要另想办法。
办法一:
将Python项目及其依赖模块copy到待部署的服务器上,按setup.py定义的依赖关系进行一一安装依赖,最后再安装Python项目。
这种方式太过费时,是难以接受的。
办法二:
使用virtualenv将Python项目的运行环境和实际环境隔离开。
virtualenv是一个Python模块,它能够创建一个python的隔离环境,目的是让一个python的运行不会影响本地其它python项目的运行。我们利用它来创建一个Python隔离文件目录,我们在虚拟的Python环境中安装好依赖模块,然后将我们自己的python项目与这个隔离文件目录一起打包,这样我们的项目至少可以在相同操作系统中copy部署,对于运维人员部署项目时将会节省不少时间。