[Distutils] Deviation between distutils and setuptools over package_data

PJ Eby pje at telecommunity.com
Thu Sep 19 05:36:47 CEST 2013


On Wed, Sep 18, 2013 at 5:07 PM, Benjamin Root <ben.v.root at gmail.com> wrote:
> In creating a source distribution, I have found a disparity between the
> behaviors of distutils and setuptools with respect to package_data. As of
> python Issue 2279: http://bugs.python.org/issue2279, entries listed in
> package_data are used when building an sdist. I have verified that this
> works in a simple example when setup() is imported from distutils.core.
> However, if I import setup() from setuptools, it does not pull in the data
> as listed in package_data (and presumedly data_files).

You need to use the include_package_data = True flag.


> P.S. - on a related note, for a package "foo", foo.egg-info directory is
> created with a SOURCES.txt file. I have found that under certain situations,
> it seems that a successful install would result in a fully listed
> SOURCES.txt, and then subsequent calls to sdist seems to use that
> information to build seemingly correct archives. A co-working
> double-checking a deployment process I made did an sdist and created a
> source distribution without the package_data when he did a fresh checkout,
> but whenever I did it from my development branch, the source distribution
> worked fine. I haven't figured out exactly how this came about, but it seems
> to be tied to the SOURCES.txt file.

SOURCES.txt mostly exists so that you can safely build an sdist from
an sdist, as is required by e.g. bdist_rpm, without having any
revision control data on hand to guide the process.  Setuptools also
can insert a possibly-modified setup.cfg into an sdist for the same
reason, so that if you used revision control tags to specify the
version when building the sdist, any sdists rebuilt from that sdist
will have the same version tags.


More information about the Distutils-SIG mailing list