2012-05-01 17 views
4

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

答えて

3

どこにインストールしようとしていますか?あなたはこのように、パッケージディレクトリ内に置く場合...

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

...あなたは、このように、あなたのsetup.pyファイルにpackage_dataオプションを使用することができます。

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と同じことを行うことができます:あなたがPythonライブラリの外の特定のファイルシステムの場所にそれらをインストールしようとしている場合は

recursive-include * *.xml 

あなたが行うことができれば、私はわからないんだけど経ていますsetup.py

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 
関連する問題