conda build省略了数据文件子目录,即使setup包含它们也是如此

时间:2017-12-22 04:00:54

标签: setuptools conda setup.py

我正在使用conda build包含文档的Python项目,通过 MANIFEST.in 文件和package_data的{​​{1}}选项:

MANIFEST.in

setup()

setup.py 中:

recursive-include pybert/doc/_build/html *

我发现虽然setup( name='PyBERT', version=pybert.__version__, packages=['pybert',], package_data={'pybert': ['doc/_build/html/*',]}, 包含 html 目录的子目录:

setup

(pybert) Davids-Air-2:PyBERT dbanas$ tar xjf ~/anaconda/conda-bld/noarch/pybert-2.4.1-py_0.tar.bz2 -C ~/tmp/ (pybert) Davids-Air-2:PyBERT dbanas$ ls ~/tmp/site-packages/ PyBERT-2.4.1-py2.7.egg-info pybert (pybert) Davids-Air-2:PyBERT dbanas$ cat ~/tmp/site-packages/PyBERT-2.4.1-py2.7.egg-info/SOURCES.txt | grep 'html' pybert/doc/_build/html/.nojekyll pybert/doc/_build/html/genindex.html pybert/doc/_build/html/index.html pybert/doc/_build/html/intro.html pybert/doc/_build/html/modules.html pybert/doc/_build/html/objects.inv pybert/doc/_build/html/py-modindex.html pybert/doc/_build/html/search.html pybert/doc/_build/html/searchindex.js pybert/doc/_build/html/_modules/index.html {8 more from _modules/ snipped.} pybert/doc/_build/html/_sources/index.rst.txt pybert/doc/_build/html/_sources/intro.rst.txt pybert/doc/_build/html/_sources/modules.rst.txt pybert/doc/_build/html/_static/ajax-loader.gif {21 more from _static/ snipped.} pybert/doc/_build/html/test_dir/dummy.html 实际安装的文件集缺少 html (以及 .nojekyll 文件)的子目录:

conda build

请注意,手动添加了 test_dir / 子目录,以确保它不仅仅是其他子目录名称的'_'前缀。显然,事实并非如此,因为 test_dir / 也缺失了。

2 个答案:

答案 0 :(得分:1)

package_data要求我们明确列出所有子目录,唉。请参阅https://github.com/sqlobject/sqlobject/commit/20d035deaf0f0b6e5d3d5163a3f15281b5dc6c95#diff-2eeaed663bd0d25b7e608891384b7298R102

上的示例

所以你应该写

package_data={'pybert': [
    'doc/_build/html/.nojekyll',
    'doc/_build/html/*',
    'doc/_build/html/_modules/*',
    'doc/_build/html/_sources/*',
    'doc/_build/html/_static/*',
    'doc/_build/html/test_dir/*',
]},

答案 1 :(得分:1)

  

虽然这是关于setuptools,不是 conda - 我来这里的原因(即问题标题)......

实际上,您可以使用*/*语法定义子目录副本。 在您的情况下,以下应该有效:

setup(
  ...
  package_data={'pybert': ['doc/_build/html/*/*',]},
  ...