我的基于 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 开发人员如何继续使用构建部署的优势?我愿意接受任何建议,并希望讨论和了解他们的利弊。