Python: Why setuptools doesn't include my package data?

distutils, python, setuptools

Solution

In my case, the problem wasn't in setup.py but the missing MANIFEST.in, which needs to also declare package data.

Problem

Today I created a setup.py-file and found one working script and two none working scenarios. In the two non working scenarios the `package_data` after is missing in the build. I created the build with `python setup.py sdist`. Why scenario 2 and 3 don't include my package data? Scenario 1 works: ``` import os from distutils.core import setup def find_packages(path): package_path = os.path.join(os.path.dirname(__file__), path) packages = [] for f in os.walk(package_path): directory_name = f[0] if directory_name.endswith('egg-info') or directory_name.endswith('path'): continue directory_name = directory_name.replace(package_path, '').replace('/', '.').strip() if not len(directory_name): continue if directory_name.startswith('.'): directory_name = directory_name.replace('.', '', 1) packages.append(directory_name) return packages setup ( name = 'mypkg', packages = find_packages('src'), package_dir = {'mypkg': 'src/mypkg'}, include_package_data = True, package_data = { '': ['*.txt'], 'mypkg': ['data/*.dat'], } ) ``` Scenario 2, doesn't work: ``` from setuptools import setup #, find_packages from setuptools.command import sdist setup ( name = 'mypkg', packages = ['mypkg'], package_dir = {'mypkg': 'src/mypkg'}, include_package_data = True, package_data = { '': ['*.txt'], 'mypkg': ['data/*.dat'], } ) ``` Scenario 3 doesn't work either: ``` from setuptools import find_packages from setuptools.command import sdist setup ( name = 'mypkg', packages = find_packages('src'), package_dir = {'mypkg': 'src/mypkg'}, include_package_data = True, package_data = { '': ['*.txt'], 'mypkg': ['data/*.dat'], } ) ```

Original source

Related problems