Search code examples
pythonmanifestsetuptoolspython-packaging

MANIFEST.in is not adding data folder inside site-packages


Following is the structure of folder

project_name
    src
        pkg
            folder1
                __init__.py
                mod1
            folder2
                __init__.py
                mod1
                data_folder
                    data.pkl
            __init__.py
    __init__.py
    MANIFEST.in
    setup.py

To make sure that data_folder is included in the package, I wrote MANIFEST.in

include src/pkg/folder2/data_folder/*

and for setup.py

package_dir={"": "src"},
packages=find_packages("src"),
include_package_data=True,

However, when I checked site-packages, there was no data_folder. What did I miss?


Solution

  • When setuptools is used, manifest file is not longer required. Setuptools takes care of it.

    Instead, this has to be done in setup.py file.

    from setuptools import setup
    setup(
    .
    .
    package_data={"pkg":["folder2/data_folder/*.pkl"]},
    include_package_data=True,
    .
    .
    )
    

    Also, __init__.py are not required inside data_folder and its sub-folders. This has solved the problem for me.