在buildout环境中安装python egg,包括数据文件

时间:2010-02-18 12:26:53

标签: python django buildout egg

这个问题假设我要安装的python包是一个包含模板和媒体文件的django应用程序。但这个问题对任何不仅包含.py个文件的python包都有效。

我正在使用buildout创建一个可重建的环境,我正在开发一个django项目。我的buildout.cfg看起来像这样:

[buildout]
parts = python
eggs =
  normal-python-package
  python-package-with-data-files
find-files = 
  http://domain-to-python-package-with-data-files

[python]
recipe = zc.recipe.egg
interpreter = python
eggs = ${buildout:eggs}

(以及一些django相关的东西)。 python-package-with-data-files可通过页面http://domain-to-python-package-with-data-files上的链接获取。

鸡蛋normal-python-packagepython-package-with-data-files已成功安装在eggs/目录中。由于python-package-with-data-files已在其zip_safe文件中将False设置为setup.py,因此可在eggs/中解压缩。

.py中只有python-package-with-data-files的解压缩鸡蛋中没有eggs/的非.tar.gz个文件({em> 包含在http://domain-to-python-package-with-data-files包中可在setup.py)获得。

如何将这些数据文件包含在鸡蛋中?我是否需要更改包的python setup.py sdist文件?还是与建筑有关?

我发现的事情如下:

如果我在python-package-with-data-files根目录中创建python setup.py bdist,则所有数据文件都包含在创建的.tar.gz文件中。但是,如果我创建一个bdist,它会导致构建而不包含数据文件。

这让我觉得问题不是针对特定的。但也许有一种方法可以告诉buildout不要创建sdist而是python-package-with-data-files来创建egg并将包安装到项目中。

我该怎么办?我是setup.py的维护者,因此如有必要,我可以更改{{1}}。

1 个答案:

答案 0 :(得分:3)

听起来你需要在setup.py文件中使用package_data keyword argument,所以distutils知道这些文件应该与你的软件包一起安装。