繁体   English   中英

在一个捆绑包中轻松部署 Python 和应用程序,用于 Linux

[英]Easy Deploying of Python and application in one Bundle , For Linux

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

由于我在标准 python 库之外使用了许多第三方模块,因此部署它成为一场噩梦。 我失去了他们的踪迹。 特别是不同的 Linux 操作系统使用不同的版本,因此使用操作系统的 package 管理器安装它们不再好。

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

此外,我必须教客户端如何部署,以便他们可以在其他服务器上进行测试。 但他们不是 linux 专家。 我必须让它变得简单,在一个脚本中或通过复制和粘贴。

Windows 有 Portablepython 但 Linux 没有。 而且我从未使用过 python 包装,因为我通常在我只托管的服务器上工作。

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

Most Python packages can be deployed by creating a lib or similar directory in your deployment, and adding it to sys.path in Python, or PYTHONPATH outside, then copying the package directory (usually inside the directory you unzipped) into that directory. 这使您可以将 package 与您部署的代码一起保存在 Mercurial 存储库中。

部署 Python 本身会有点麻烦,但是如果您可以控制它的安装位置(例如/usr/local/opt ),那么只需./configure --prefix=...make ,和sudo make install 然后,只要脚本被标记为可执行,您就可以将脚本指向 Python,方法是使用类似#!/usr/local/bin/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

这是一个广泛的话题,但这里有一些提示。

对于您的 Python 项目及其依赖项,请查看virtualenvpip

Virtualenv 在您的目标平台上提供了一个隔离的 python 环境,然后您可以将项目安装到该环境中。

Pip 是一个 package 安装工具,它将下载并安装您的 package 及其依赖项。 查看 pip freeze 以提供一种快速定义您当前已在开发环境中安装的依赖项列表的方法。

如果您想了解更多关于 Python 中 package 分发的信息,那么您还应该阅读有关分发项目的信息。

对于系统的非 python 组件,包括安装 python 本身,可以使用像Puppet这样的系统自动化工具,但听起来它可能对您的需求有点过分。 如果您正在寻找一步安装,您可能应该考虑为您的目标系统的package 管理器构建 package 。

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

可能是 VirtualEnv 是你需要的吗?

超级简单的服务器端设置没有理由。

不要在这上面浪费时间。

将安装多少台服务器? 不太多。

系统管理员期望基于服务器的应用程序具有一定程度的复杂性。

你有一个第 3 方包的列表; 他们遵循该列表并进行安装。

然后 - 在他们完成所有安装之后 - 他们安装并配置您的 package。

这是许多在服务器上工作的系统管理员所期望的。 他们期望依赖关系并且期望多步骤安装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM