使用 distutils setup() 在 python 3 包构建中包含数据的最小用法是什么?

What is the minimal usage for including data in a python 3 package build using distutils setup()?

我正在尝试在 python 3.6.3 中构建我的第一个包。我已经通读了文档并搜索了问题,但似乎无法理解我做错了什么。

我的包目录结构如下:

| - mypkg/
|   | - setup.py 
|   | - someModule/
|   |   | - __init__.py
|   |   | - a.py
|   |   | - b.py
|   |   | - data /
|   |   |   |- somedata.xml

我的安装脚本是:

#!/usr/bin/env python

from distutils.core import setup

setup(...
      packages=['someModule'],
      data_files = [('someModule', ['someModule/data/somedata.xml'])]
      )

然而,当我 运行 python setup.py build 我的数据没有被添加到 build/lib/mypkg 目录。我究竟做错了什么?

我解决了这个问题。最后使用 package_data 参数而不是 data_files 参数做到了,即我将 setup.py 更改为:

setup(...
      packages = ['someModule'],
      package_data = {'someModule': ['data/somedata.xml']},
      )

感谢@Martijn Pieters 提示 data_files 适用于包外的数据。