Включить файлы без python в RPM с помощью setuptools

У меня есть некоторые справочники, которые содержат файлы xml, которые я хотел бы включить в мой проект python при создании RPM с помощью bdist_rpm . Я думал, что могу сделать это, имея MANIFEST.in сделать recursive-include * * , однако он не содержит ничего, кроме * .py файлов. Есть ли в любом случае, чтобы bdist_rpm включал файлы не python в пакет или специально включал * .xml-файлы?

Где вы пытаетесь их установить? Если вы поместите их в каталог пакетов, например …

 myproject/ mypackage/ __init__.py resources/ file1.xml file2.xml 

… вы можете использовать параметр setup.py файле setup.py , например:

 from setuptools import setup, find_packages setup( name='myproject', version='0.1', description='A description.', packages=find_packages(), include_package_data=True, package_data = { '': [ '*.xml' ] }, install_requires=[], ) 

Это будет рекурсивно включать любые *.xml файлы внутри любых пакетов. Они будут установлены вместе с остальной частью вашего пакета (ов) где-нибудь внутри пути библиотеки Python. Вы можете сделать то же самое с MANIFEST.in который выглядит так:

 recursive-include * *.xml 

Если вы пытаетесь установить их в определенные места файловой системы за пределами библиотеки Python, я не уверен, что вы можете сделать это через setup.py .

Вы можете использовать параметр data_files для настройки, чтобы сделать то, что вам нужно. Что-то вроде этого:

 setup( ... package_data = { '/usr/share/yourapp/xmls': [ 'xmls/1.xml', 'xmls/2.xml' ] }, ... ) 

Это установит следующие файлы:

 /usr/share/yourapp/xmls/1.xml /usr/share/yourapp/xmls/2.xml 

Обычно я создаю список файлов в такой функции:

 def get_xmls(): xmlfiles = [] for filename in os.listdir('xmls/'): if filename.endswith('.xml'): xmlfiles.append('xmls/%s' % filename) return xmlfiles