【问题标题】:Which options for python deployment do I have if GCC not working anymore如果 GCC 不再工作,我有哪些 python 部署选项
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 在其他地方构建并将构建移动到部署主机 - 我会尝试一下。
    • 我未能使用来自部署主机的自定义 python 在构建主机上运行构建。我停止调查这个具体案例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多