如果GCC不再工作,我有哪些python部署选项

时间:2013-09-04 09:21:40

标签: python virtualenv setuptools buildout zodb

我的基于python buildout的生产环境被管理员移动到chroot中。现在重新运行buildout失败,因为编译器(gcc)在编译C-extensions(PIL,ZODB)的任何包时退出并出错。

_imaging.c:3403: error: (near initialization for 'functions[39].ml_meth')
error: Setup script exited with error: command 'gcc' failed with exit status 1

管理员告诉我gcc在chroot中被打破了。当然这是一个奇怪且不可行的情况,它将尽快修复。

但是我多年来一直在使用buildout / virtualenv。现在我真的很感兴趣我现在仍然有更新我的基于buildout的python部署的选项,而gcc被破坏了。我成功运行了buildout,如果我删除了触发gcc编译的任何依赖项(在buildout.cfg或包setup.py中),但这让我留下了不完整的应用程序启动脚本。基本上所有软件包都已下载/汇编/编译,但buildout总是重新编译一个已经改变的部分(我知道.installed.cfg)。

在这种情况下,我或任何不负责系统管理的python开发人员如何继续使用buildout部署的优势?我愿意接受任何建议,并希望讨论并了解他们的利弊。

1 个答案:

答案 0 :(得分:0)

在构建主机上的其他位置构建 - 在可以运行的位置运行buildout(运行GCC的相同架构的框) - 然后将Fabric集成到构建环境中以将构建推送到部署主办。我没有这样做,但是假设您必须编写大量的方法来将您需要的内容(例如内置鸡蛋,开发鸡蛋,src,部件,bin目录)推送到fabfile中的服务器。