2011-10-28 9 views
1

私はこのレイアウトでプロジェクトをやってる:は、いくつかのDATA_FILESとPIPのためのpythonパッケージを作る

project/ 
    bin/ 
     my_bin.py 
    CHANGES.txt 
    docs/ 
    LICENSE.txt 
    README.txt 
    MANIFEST.in 
    setup.py 
    project/ 
     __init__.py 
     some_thing.py 
     default_data.json 
     other_datas/ 
      default/ 
       other_default_datas.json 

そして問題は、私はこの使用してピップをインストールするとき、それは「default_data.json」を置くということです"other_datas"フォルダは、残りのアプリと同じ場所にありません。

私はそれらを同じ場所に置くためにどのようにしなければなりませんか?彼らは

代わりに「/home/user/.virtualenvs/proj-env/lib/python2.6 "/home/user/.virtualenvs/proj-env/project" に終わる

/のsite-packages /プロジェクト」

はsetup.pyで私はこのようにそれをやっている:

inside_dir = 'project' 
data_folder= os.path.join(inside_dir,'other_datas') 

data_files = [(inside_dir, [os.path.join(inside_dir,'default_data.json')])] 
for dirpath, dirnames, filenames in os.walk(data_folder): 
    data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]]) 

答えて

2

https://docs.python.org/3.4/distutils/setupscript.html#installing-additional-filesから:

ディレクトリが相対パスであれば、それはインストールプレフィックスに対する解釈されます(Pythonのsys.prefix純粋なPython用パッケージ、拡張モジュールを含むパッケージの場合はsys.exec_prefix)。

の各ファイル名は、パッケージソース配布の先頭にあるsetup.pyスクリプトに関連して解釈されます。

したがって、上記の動作は単にdata_filesの動作方法です。

あなたは、パッケージ内のデータファイルを含めたい場合は、代わりにpackage_dataを使用する必要があります。

package_data={'project': ['default_data.json', 'other_datas/default/*.json']} 
0
たもの .jsonを含めるように MANIFEST.inを変更

それはおそらくつもり作品です:

recursive-include project/ *.json 
+0

すでにマニフェストにあり、ファイルは間違っていますが、間違ったフォルダにあります。 – Arruda

+0

コメントは、なぜ機能しなかったと示唆すれば、この答えは受け入れられたとマークしたのですか? – tobib

0

は、このパッケージhttps://pypi.python.org/pypi/datafolderを見てみましょう。これにより、ユーザによっておよびパッケージ(データファイル:* .conf、* .ini * .db、...)をインストールして使用することが容易になります。

関連する問題