【发布时间】:2013-09-04 09:21:39
【问题描述】:
我的基于 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 开发人员如何继续使用构建部署的优势?我愿意接受任何建议,并希望讨论和了解它们的优缺点。
【问题讨论】:
标签: python virtualenv setuptools buildout zodb