2017-09-11 6 views
1

ホストマシンのlibsに従って依存関係をインストールする方法はありますか? "問題"はlib e.q:Hadoopの有無にかかわらずマシンで動作するパッケージを持っていることです。pythonの依存関係はマシンホストによってインストールされますか?

しかし、pydoopはホストにインストールされていないときに落ちています。 Hadoopがインストールされていないマシンにpydoopをインストールしないようにインテリジェントにすることは可能ですか?

答えて

1

可能ですが、そうすることはお勧めしません。他の何を指定する文字列の文字列やリストに 「エキストラ」(プロジェクトのオプション機能)の辞書マッピング名:

extras_require:代わりに、setuptoolsを使用して配布の「余分な」オプションが作りますこれらの機能をサポートするには、ディストリビューションをインストールする必要があります。この引数の形式の詳細と例については、Declaring Dependenciesの下のセクションを参照してください。

だからあなたsetup.pyはこのようなものがあります:

setup(
    name="PyAgus", 
    ... 
    extras_require={ 
     'hadoop': ["pydoop"], 
    } 
) 

をオプションでHadoopのサポートとか、インストールするかどうかを決定するために、ユーザーにそれを任せます。この場合の「ユーザ」は、オーケストレーションレポであってもよいことに留意されたい。塩/不可能/人形。

あなたが本当に動的にソースマシン上で役に立つ、あなたがsetup.pyに直接install_requires引数を生成するためのロジックを追加post-install scriptまたはちょうどを使用してそれを行うことができますLIBSの検査に基づいて追加のかどうかをインストールするかどうかを決定します。両方の方法はハッキーで、PyPAはそれにつきましてはopen ticketです。

関連する問題