2014-06-06 54 views
1

我有一个buildout,它包含三个用于python库的源代码库(它是一个带有两个可重用库的Django网络应用程序)。从开发人员的角度来看,一切都很好,但现在我想构建要部署的发行版。所以在我的buildout.cfg我:构建 - 从源代码安装鸡蛋

[buildout] 
parts = 
    django 
develop = 
    src/lib1 
    src/lib2 
    src/django_app 
eggs = 
    lib1 
    lib2 
    django_app 

[django] 
recipe = djangorecipe 
... 
eggs = 
    lib1 
    lib2 
    django_app 
    ... 

我如何告诉扩建打包那些鸡蛋和在例如安装它们eggs/而不是develop-eggs/作为链接回到源代码?

我想在扩建后能够做到的事情是捕获lib1lib2的内置鸡蛋,并将它们上传到我当地的pypi回购站。我的替代方案是手动运行python setup.py bdist_egg,但似乎buildout应该已经知道这一点。

回答

0

抓取和安装鸡蛋不同于制作和托管它们,这就是为什么buildout本身不提供pypi服务器或类似的东西。

所以......你自己必须做出适当的鸡蛋/发布,并将它们放置在可以找到它们的地方。

  • 我假设你的图书馆有setup.py?对于一个好的版本,你需要更新版本号并在svn/hg/bzr/git中标记你的版本。 (为了使这更容易,更省时,请看zest.releaser)。

  • 有几个pypi克隆,您可以在本地安装,您可以上传自定义软件包。但最简单的解决方案是在某个目录中发布一个目录,并使用apache或nginx进行托管,请参阅https://stackoverflow.com/a/13354463/27401。将该URL添加到您的[buildout]部分,作为find-links = http://example.com/my_packages/。现在buildout会查看该页面(如此:确保告诉apache列出该目录中的所有文件)。 Setuptools使用标准的命名方案(mypackage-1.2.zip),这就是它的工作原理。

  • 只剩下要做的事情就是让你的文件进入服务器上的apache/nginx目录。首先,一个简单的定制脚本可能就足够了。要获得更多自动化,请查看tags2sdists。您向它提供一个包含源软件包和可以放置打包版本的目录的目录。你知道,你甚至可以在你的构建中运行它作为bin/tags2sdists src/ var/packages/。这将从您的所有标签创建源代码包,并将它们放入var/packages/。之后将它们复制到其他地方。