MANIFEST.in, package_data и data_files?

Я пытаюсь создать пакет Python, и у меня есть структура каталогов, как это:

mypkg/
├── __init__.py
├── module1
│   ├── x.py
│   ├── y.py
│   └── z.txt
└── module2
    ├── a.py
    └── b.py

Затем я добавил все файлы в MANIFEST.in и когда я проверяю созданный архив, у него были все файлы.

Когда я python setup.py install в dist-packages/mypkg/module1. Я вижу только файлы Python, а не z.txt.

У меня есть z.txt как в MANIFEST.in и в setup.py:

setup (
    packages = [
        'mypkg',
        'mypkg.module1',
        'mypkg.module2',
    ],
    package_data = {
        'mypkg': ['module1/z.txt']
    },
    include_package_data = True, 
    ...
)

Я также попытался добавить файл как data_files но создал каталог в /usr/local. Я хочу сохранить его в каталоге исходного кода, так как код использует эти данные.

Я прочитал сообщения, перечисленные ниже, но я все время путаюсь о том, как правильно сохранить z.txt в нужном месте после setup.py install.

Ответ 1

Обновление: оно было исправлено, когда я начал использовать setuptools вместо distutils.core. Я думаю, что это была некоторая проблема, когда distutils не соглашалась с манифестом, в то время как setuptools работал без каких-либо изменений в коде. Я рекомендую использовать setuptools в будущем. Используя ссылку : setup tools- руководство разработчика

Ответ 2

Попробуйте использовать setuptools вместо distutils.