2017-12-20 9 views
0

を複数のサブパッケージをパッケージ私が一緒にコードsomething.pyfoobaralphabetデータディレクトリを持つようなディレクトリ構造を持っている:Pythonは異なるデータディレクトリと

\mylibrary 
    \packages 
     \foobar 
      foo.zip 
      bar.zip 
     \alphabet 
      abc.zip 
      xyz.zip 
      something.py 
    setup.py 

そして目標は、ユーザーがインストールピップことができるようになっています以下のようなモジュール:

pip install mylibrary[alphabet] 

そして、それが唯一のpackages/alphabet/*データとPythonコードからのデータが含まれます。同様の現象はpip install mylibrary[foobar]で利用できるはずです。

ユーザーが指定なしにインストールする場合:

pip install mylibrary 

そして、それはpackages/下にあるすべてのデータディレクトリが含まれます。

現在、私のようなPython3.5とsetup.py書いてみた:ユーザーがpip install mylibraryを行う際に、すべてのデータディレクトリとの分布を作成します

import glob 
from setuptools import setup, find_packages 


setup(
    name = 'mylibrary', 
    packages = ['packages'], 
    package_data={'packages':glob.glob('packages' + '/**/*.txt', recursive=True)}, 
) 

setup.pyを変更して、pip install mylibrary[alphabet]のような特定のpipインストールを行うことはできますか?あなたはpip install mylibrary[alphabet]はその後

pip install mylibrary 
pip install alphabet 

を意味するextrasとしてalphabetfoobarを追加する別々のパッケージとしてalphabetfoobarをパッケージ化して公開する必要が

+0

'setup.py'は、パッケージがプレーンなのかエクストラのなかにインストールされているかどうかを決して知りません。この情報は、インストールツール( 'pip'や' easy_install'など)でのみ使用され、セットアップスクリプトに渡されることはありません。セットアップスクリプトで定義した 'extras'は、おおまかに言えば、インストーラの追加の指示だけです。「エクストラキーワードを取得した場合は、パッケージと追加のパッケージをインストールする必要があります。 – hoefling

答えて

0

ファーズ:

setup(
    …, 
    extras = { 
     'alphabet': ['alphabet'], 
     'foobar': ['foobar'], 
    } 
) 

辞書のキーpip install mylibrary[EXTRA_NAME]で使用されている名前で、値はPyPIからインストールされるパッケージ名のリストです。

PS。そして、いいえ、PyPIからパッケージとして利用できないデータファイルをインストールするためにエクストラを使用することはできません。

関連する問題