Buildout - 从源头安装鸡蛋

时间:2014-06-06 19:50:30

标签: python setuptools buildout

我有一个buildout,其中包含三个用于python库的源代码库(它是一个带有两个可重用库的Django Web应用程序)。从开发人员的角度来看,一切都很好,但现在我想构建要部署的发行版。所以在我的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
    ...

如何告诉buildout将这些包装成鸡蛋并将其安装在例如鸡蛋中eggs/代替develop-eggs/作为返回源的链接?

我希望在buildout之后能够捕获lib1lib2的内置鸡蛋并将它们上传到我当地的pypi repo。我的替代方法是手动运行python setup.py bdist_egg,但似乎buildout应该已经知道了。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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