Search code examples
pythonsetup.pysdist

python setup.py sdist only including .py source from top level module


I have a setup.py:

from setuptools import setup

setup(
      ...
      packages=['mypackage'],
      test_suite='mypackage.tests',
      ...
    )

python setup.py sdist creates a file that includes only the source modules from top-level mypackage and not mypackage.tests nor any other submodules.

What am I doing wrong?

Using python 2.7


Solution

  • Use the find_packages() function:

    from setuptools import setup, find_packages
    
    setup(
        # ...
        packages=find_packages(),
    )
    

    The function will search for python packages (directories with a __init__.py file) and return these as a properly formatted list. It'll start in the same dir as the setup.py script but can be given an explicit starting directory instead, as well as exclusion patterns if you need it to skip some things.