views:

357

answers:

3

I'm trying to put a Python project into a tarball using setuptools. The problem is that setuptools doesn't appear to like the way that the source tree was originally setup (not by me, I must add). Everything that I actually want to distribute is in the top-level directory, rather than in a subdirectory like the setuptools docs talk about.

The tree has a directory, tests, that I don't want to have in the released package. However, using exclude_package_data doesn't seem to actually do any excluding, and I'd like to work out what I've done wrong.

My setup.py looks like this, in relevant part:

setup(
  name="project",
  packages=[''],
  include_package_data=True,
  exclude_package_data={'': ['tests']},
  test_suite='nose.collector',
)
+1  A: 

Ug, setuptools makes this really tricky :(

I don't know if this is what you want, but one project I work on uses a combination of two things:

from setuptools import setup, find_packages
...
packages = find_packages(exclude=['tests']),
data_files = os.walk(path_to_files),
David Wolever
A: 

For similar purpose, my collegue wrote setuptools-dummy package: http://github.com/ella/setuptools-dummy/tree/master

Take a look at setuptools_dummy, modify excludes to your needs and it should work. If not, open an issue ;)

Almad
A: 

The next setup should work:

setup(
   name="project",
   packages=[''],
   include_package_data=True,
   exclude_package_data={'': ['tests/*']},
   test_suite='nose.collector',
 )
Antonio Beamud