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