【发布时间】:2012-11-15 15:02:17
【问题描述】:
我对当前部署 Python 代码的方式不满意,我想知道是否有更好的方法。首先我会解释我在做什么,然后是缺点:
- 我在开发的时候使用virtualenv做依赖隔离,使用pip安装所有的库。 Python 本身来自我的操作系统(Ubuntu)
- 然后我将代码构建到一个“.deb”debian 包中,其中包含我的源代码树和我的依赖项的 pip 包
- 然后当我部署时,我重建 virtualenv 环境,源 foo/bin/activate 然后运行我的程序(在 Ubuntu 的新贵下)
以下是问题:
- pip 包非常大,显着增加了 debian 包的大小。这没什么大不了的,但很烦人。
- 每次部署时,我都必须构建所有 C 库(PyMongo、BCrypt 等)。这需要一点时间(几分钟),而且在生产环境中完成这项 CPU 密集型工作有点蹩脚
这是我的限制:
- 必须在 Python 3 上工作。最好是 3.2
- 必须有依赖隔离
- 必须与使用 C 的库(如 PyMongo)一起使用
我听说过关于冻结的事情,但我无法让它发挥作用。 Pypi 中的 cx_freeze 似乎无法编译(至少在我的 Python 上)。其他冻结实用程序似乎不适用于 Python 3。我怎样才能更好地做到这一点?
【问题讨论】:
标签: python deployment python-3.2