【发布时间】:2016-05-10 14:20:51
【问题描述】:
我发现多个来源(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 安装运行需要数据文件的测试。这首先是正确的方法吗?
【问题讨论】:
-
使用
pkg_resources发现您的数据文件。有关类似问题,请参阅我的 answer。
标签: python pip setuptools distutils