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/**/*'],
}