4

を使用して RPM をビルドするときに、Python プロジェクトに含めたい xml ファイルを含むフィクスチャ ディレクトリがいくつかありますbdist_rpm。MANIFEST.in に を実行させることでこれを実行できると思っていましたがrecursive-include * *、*.py ファイル以外は含まれていません。とにかく bdist_rpm に非 python ファイルをパッケージに含めるか、具体的には *.xml ファイルも含めますか?

4

2 に答える 2

3

data_filessetup のパラメーターを使用して、必要なことを行うことができます。このようなもの:

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 に答える
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 ライブラリ パス内のどこかにインストールされます。MANIFEST.in次のようなa で同じことができます。

recursive-include * *.xml

それらを Python ライブラリ以外の特定のファイル システムの場所にインストールしようとしている場合、setup.py.

于 2012-05-02T01:33:44.900 に答える