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

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


Use the find_packages() function:

from setuptools import setup, find_packagessetup(    # ...    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.


For people using pure distutils instead of setuptools: you have to pass the list of all packages and subpackages (but not all submodules, they are detected) in the packages parameter.


Just include all your submodules in the packages list:

from setuptools import setupsetup(      ...      packages=['mypackage', 'mypackage.tests', 'mypackage.submodules'],      ...     )