setuptools не распространяет мои файлы данных

У меня есть следующее в setup.py:

from setuptools import setup
# ...
setup(
    name='xml-boiler',
    version='0.0.1',
    url='https://github.com/vporton/xml-boiler',
    license='AGPLv3',
    author='Victor Porton',
    author_email='porton@narod.ru',
    description='Automatically transform between XML namespaces',

    packages=find_packages(),
    package_data={'': ['*.ttl', '*.xml']},
    scripts=['bin/boiler'],
    data_files = [
        ('/etc/xmlboiler', ['etc/config-cli.ttl'])
    ],
    test_suite="xmlboiler.tests",

    cmdclass={'build_py': MyBuild},
)

Но после того, как я бегу python setup.py buildкаталог сборки не содержит *.xml или же *.ttl файлы.

В чем моя ошибка?

Я также хочу распространять все файлы из xmlboiler/core/data/assets/ а также xmlboiler/core/data/assets/,


Я не понимаю, как это работает:

package_data={'': ['*/.xml', '*/.ttl', '*/.net', 'data/assets/*', 'data/scripts/*.xslt', 'xmlboiler/doc/*.html', 'xmlboiler/doc/*.css']}, 

включены xmlboiler/core/data/scripts/section.xslt но нет xmlboiler/tests/core/data/xml/simple.xml, Зачем?!

1 ответ

Решение

package_data является отображением имен пакетов в файлы или файловые глобусы. Это означает, что

package_data = {'', ['*.xml', '*.ttl']}

будет включать каждый файл, заканчивающийся на .xml или же .ttl находится в любом каталоге пакета, например xmlboiler/file.xml, xmlboiler/core/file.ttl и т.д., однако, он не будет включать файл xmlboiler/core/data/interpreters.ttl потому что он расположен в data который не является пакетом dir (не содержащий __init__.py файл). Чтобы включить это, вы должны использовать правильный путь к файлу:

package_data = {'xmlboiler.core', ['data/interpreters.ttl']}

Чтобы включить каждый .ttl файл под xmlboiler/core/data:

package_data = {'xmlboiler.core', ['data/*.ttl', 'data/**/*.ttl']}

Это будет включать каждый .ttl файл в data каталог (глобус data/*.ttl) и каждый .ttl файл в каждом подкаталоге data (Glob data/**/*.ttl).

Чтобы включить каждый .ttl а также .xml файл в каждой упаковке:

package_data = {'', ['*.xml', '**/*.xml', '*.ttl', '**/*.ttl']}

Я также хочу распространять все файлы из xmlboiler/core/data/assets/

Тот же подход для data/assets, но опустить расширение файла в globs:

package_data={
    'xmlboiler.core': ['data/assets/*', 'data/assets/**/*'],
}
Другие вопросы по тегам