我发现多个来源(https://docs.python.org/3/distutils/sourcedist.html#specifying-the-files-to-distribute,http://blog.ionelmc.ro/2014/05/25/python-packaging/,http://blog.ionelmc.ro/2014/06/25/python-packaging-pitfalls/)表明在Python包中分发数据文件的方法是使用setuptools的include_package_data
选项和MANIFEST.in
。我的包中的文件看起来像,
setup.py
setup(
# ...
include_package_data = True,
# ...
与文件的其余部分(希望无关)被省略。
MANIFEST.IN
graft testdata
include ChangeLog
include README.rst
include COPYING
include COPYING.LESSER
include tox.ini
当我在virtualenv中运行setup.py install
或使用pip时,我最终会得到Python源文件,但是在任何地方都没有testdata/
我可以找到它。我认为这是我的包装中的一个错误,除了当我抓住另一个具有类似布局的包时,我也找不到数据文件。如果我克隆示例程序包https://github.com/ionelmc/python-nameless的存储库并使用setup.py install
进行安装,则程序包将安装在目录lib/python3.4/site-packages/nameless-0.1.0-py3.4.egg/nameless/
中。但是,我无法在virtualenv中的任何地方找到任何数据文件或测试。他们应该在哪里结束?这应该如何运作?
我提出这个问题的动机是项目的另一个贡献者想要从pip安装运行需要数据文件的测试。这首先是正确的做法吗?
答案 0 :(得分:0)
我的理解是你应该
include testdata
而不是graft
- 说实话,我实际上不确定graft
是做什么的。
此外,我认为无需指定include_package_data = True