首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个捆绑包中轻松部署Python和应用程序,适用于Linux

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

Stack Overflow用户
提问于 2011-07-15 17:39:27
回答 4查看 6.6K关注 0票数 4

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

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

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

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

有适用于Windows的Portablepython,但没有适用于Linux的。而且我从来没有使用过python Packaging,因为我通常只在自己托管的服务器上工作。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-15 17:57:07

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

部署Python本身会有点麻烦,但是如果您可以控制它的安装位置(比如/usr/local/opt),那么就只需要./configure --prefix=...makesudo make install了。然后,只要脚本被标记为可执行,您就可以通过像#!/usr/local/bin/python这样的行开始将脚本指向该Python。

例如,如果您正在部署需要docutils的代码,那么您应该这样做:

代码语言:javascript
复制
cd projectDir
mkdir -p lib
tar xzvf ~/Downloads/docutils-0.8.tgz
mv docutils-0.8/docutils lib
rm -r docutils-0.8

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

代码语言:javascript
复制
#!/usr/local/bin/python

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

Stack Overflow用户

发布于 2011-07-15 18:05:48

这是一个宽泛的主题,但这里有一些要点。

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

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

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

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

对于系统的非python组件,包括安装python本身,可以使用像Puppet这样的系统自动化工具,但听起来它可能无法满足您的需求。如果您正在寻找一步安装,那么您可能应该考虑为目标系统的package manager构建一个包。

票数 1
EN

Stack Overflow用户

发布于 2011-07-15 18:06:38

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

也许VirtualEnv就是你所需要的?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6705193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档