在Linux中轻松部署Python和应用程序

我在服务器端开发了相当大的 python应用程序,包括所有数据库连接,文件提取,解析,命令行调用.

它成为部署的噩梦,因为我在标准python lib之外使用了许多第三方模块.我忘记了他们.特别是不同的Linux操作系统使用它们的不同版本,因此使用OS的包管理器安装它们已不再适合.

我想在所有一个包中部署它们,包括我正在使用的当前python版本(大多数OS仍然附带Python 2.5,6我正在使用2.7和2.7特定功能.).

此外,我必须教会客户端如何部署,以便他们可以在其他服务器上测试.但他们不是Linux专家.我必须在一个脚本中或通过复制和粘贴来轻松实现.

有适用于Windows的Portablepython但是Linux没有任何东西.我从来没有使用python Packaging,因为我通常在我只托管的服务器上工作.

请告诉我python的可用包装和部署选项,包括所有已安装的python模块和python本身.

解决方法

大多数Python包可以通过在部署中创建lib或类似目录,并将其添加到Python中的sys.path或外部的PYTHONPATH来部署,然后将包目录(通常在解压缩的目录中)复制到该目录中.这使您可以使用已部署的代码保存包,例如,在Mercurial存储库中.

部署Python本身会有点麻烦,但是如果你可以控制它的安装位置(例如/usr/local或/ opt),那么只需要./configure –prefix = …,make,和sudo make install.然后,只要脚本标记为可执行文件,就可以通过#!/usr/local/bin / python这样的行启动脚本,将脚本指向该Python.

例如,如果您正在部署需要docutils的代码,那么您可以执行以下操作:

cd projectDir
mkdir -p lib
tar xzvf ~/Downloads/docutils-0.8.tgz
mv docutils-0.8/docutils lib
rm -r docutils-0.8

然后,此目录中的Python模块将在开头添加以下内容:

#!/usr/local/bin/python

import os
import sys
sys.path(os.path.join(os.path.dirname(sys.argv[0]),"lib"))
import docutils

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...