如何从virtualenv迁移到buildout?

时间:2010-08-20 14:46:37

标签: python virtualenv buildout

我正在尝试将项目从virtualenv移动到buildout,但我认为我并没有抓住buildout的整个概念。我发现的所有教程都在使用buildout的上下文中讨论Zope,我没有使用它,因此看不到如何继续。

我的virtualenv文件结构如下:

myapp/
  app.py

使用/path/to/venvs/myapp/bin/python /path/to/myapp/script.py运行。

使用buildout,我的文件结构是:

myapp/
  app.py
  bootstrap.py
  buildout.cfg

正在运行python bootstrap.pybin/buildout会为我提供以下附加文件:

myapp/
  bin/
    buildout
  eggs/
    setuptools-0.6c12dev_r80622-py2.6.egg
    tornado-1.0.1-py2.6.egg
  parts/

此时我不确定如何“运行”我的应用程序。

么?

3 个答案:

答案 0 :(得分:3)

Buildoutvirtualenv实际上是相切的。 Buildout实际上是以受约束和受控的方式部署软件,其中virtualenv是关于封装python软件在其中运行的环境。 Buildout提供了virtualenv本身所做的事情,然后围绕它进行了更多的包装。

将buildout视为如何获取代码并将其放置在准备运行的远程系统上的配方集。其中一些过程从创建一个干净的沙箱开始(这也是virtualenv可以提供的) - 然后根据需要添加库,部件和部件。

我不是一个buildout专家,但我希望你的python主代码显示在你的目录结构中的“bin”下,并且你会以某种方式从那里调用它。

答案 1 :(得分:3)

以下配方将龙卷风作为鸡蛋安装,并在bin目录中创建一个python和myapp脚本,并使用正确的搜索路径查找龙卷风鸡蛋。

[buildout] 
parts = python 
eggs = tornado 
extra-paths = ${buildout:directory}

[python] 
recipe = zc.recipe.egg 
interpreter = python 
eggs = ${buildout:eggs} 
entry-points = myapp=app:main 
extra-paths = ${buildout:extra-paths}

答案 2 :(得分:0)

在我们的项目中,我们也不使用Zope。我们花时间为学生编写了一个介绍,介绍如何使用zc.buildout和标准python打包工具组织(并通过PyPI分发)他们的代码。对于阅读此帖子的人来说,这可能很有用:http://www.idiap.ch/software/bob/docs/releases/v1.2.2/sphinx/html/OrganizeYourCode.html