3

私はこのレイアウトでプロジェクトをやっています:

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

そして問題は、pipを使用してこれをインストールすると、「default_data.json」「other_datas」フォルダーがアプリの残りの部分と同じ場所に配置されないことです。

同じ場所にするにはどうすればいいですか?

それらは「/home/user/.virtualenvs/proj-env/project」になります

「/home/user/.virtualenvs/proj-env/lib/python2.6/site-packages/project」の代わりに

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]])
4

3 に答える 3

6

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

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

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

したがって、説明されている動作は単にどのように機能するかdata_filesです。

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

package_data={'project': ['default_data.json', 'other_datas/default/*.json']}
于 2014-09-26T09:21:08.063 に答える
0

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

于 2015-02-25T12:14:52.087 に答える
-1

MANIFEST.inそれらを含めるように変更します.json

それはおそらくうまくいくでしょう:

recursive-include project/ *.json
于 2011-10-30T02:39:17.353 に答える