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'], } ) ```