4

我有一些包含 xml 文件的夹具目录,我希望在使用bdist_rpm. 我认为我可以通过让 MANIFEST.in 执行此操作recursive-include * *,但是,它不包含除 *.py 文件之外的任何内容。无论如何让 bdist_rpm 在包中包含非 python 文件或特别包含 *.xml 文件?

4

2 回答 2

3

你想在哪里安装它们?如果你把它们放在一个包目录中,像这样......

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

...您可以package_data在文件中使用该选项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 库路径内的某个位置。您可以使用如下所示的 a 执行相同的操作MANIFEST.in

recursive-include * *.xml

如果您尝试将它们安装到 Python 库之外的特定文件系统位置,我不确定您是否可以通过setup.py.

于 2012-05-02T01:33:44.900 回答
3

您可以使用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
于 2012-05-09T16:22:35.517 回答