0

我的基于 python 构建的生产环境被管理员移到了 chroot 中。现在重新运行构建失败,因为编译器(gcc)在编译任何包含 C 扩展(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。现在,我对在 gcc 损坏时更新基于构建的 python 部署仍然拥有的选项非常感兴趣。如果我删除了触发 gcc 编译的任何依赖项(在 buildout.cfg 或包 setup.py 中),我成功地运行了构建,但这让我留下了不完整的应用程序启动脚本。基本上所有的包都已经下载/组装/编译,但是 buildout 总是重新编译一个以某种方式改变的部分(我知道 .installed.cfg)。

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

4

1 回答 1

0

在其他地方构建,在构建主机上——在可以运行的地方运行 buildout(一个运行 GCC 的相同架构的盒子)——然后将Fabric集成到您的构建环境中以将构建推送到您的部署主机。我没有这样做,但是假设您必须编写很多方法来将您需要的东西(例如构建的鸡蛋、开发鸡蛋、src、零件、bin 目录)推送到您的 fabfile 中的服务器。

于 2013-09-04T12:55:32.310 回答