Многократное приложение docs (https://docs.djangoproject.com/en/1.9/intro/reusable-apps/) сообщает вам список шаблонов и статических файлов в MANIFEST.in, но он не выглядит например, python setup.py bdist_wheel вообще смотрит этот файл.
Я видел ссылки на data_files, но эти файлы находятся в каталогах относительно установки python (sys.prefix), а не в установке пакета (и sys.prefix не равномерно связан с site-packages в разных системах).
Правильно ли я полагаю, что myapp/templates/myapp/foo.html должен закончиться в .../site-packages/myapp/templates/myapp/foo.html и аналогичным образом для статических файлов и что пользователю нужно запустить manage.py collectstatic после pip install myapp?
Обновление (пример):
Следующая структура:
(build2) go|c:\srv\tmp\myapp> tree
.
|-- MANIFEST.in
|-- myapp
|   |-- static
|   |   `-- myapp
|   |       `-- foo.css
|   |-- templates
|   |   `-- myapp
|   |       `-- foo.html
|   |-- urls.py
|   `-- views.py
`-- setup.py
5 directories, 6 files
setup.py
import setuptools
from distutils.core import setup
setup(
    name='myapp',
    version='0.1.0',
    packages=['myapp']
)
MANIFEST.in
recursive-include myapp/templates *
recursive-include myapp/static *
работает python setup.py sdist и python setup.py bdist_wheel создает следующие файлы bin myapp/dist:
2016-06-18  13:47             2,073 myapp-0.1.0-py2-none-any.whl
2016-06-18  13:46             2,493 myapp-0.1.0.zip
если вы заглянете внутрь .zip файла, вы найдете шаблоны и статические папки, если вы переименуете файл .whl.zip и заглянете внутрь, каталоги не включены.
Обновление 2 (решение):
Изменение файла MANIFEST.in на
recursive-include myapp *
и setup.py в
from setuptools import find_packages, setup
setup(
    name='myapp',
    version='0.1.0',
    include_package_data=True,
    packages=['myapp'],
    zip_safe=False,
)
 тогда запуск python setup.py bdist_wheel создаст файл .whl, который устанавливает myapp/templates и myapp/static в ожидаемых местах.
