2017-01-16 8 views
2

私はvirtualenvの要件をインストールするのにrequirements.txtを使用しています。私は、リモートホストに要件をインストールするための配備を行います。pip要件をインストールする際にいくつかの要件を無視します。

問題:

  1. 既にインストール要件を無視して、いくつかの要件

  2. 無視(pip freezeのようなものを、パッケージが現れた場合、それをインストールしていないとさえアップグレードしないでください)

私の解決策:

  1. 私がインストールされたパッケージをgrepし、必要なものだけを持っrequirements2.txtを作ることができます。 (また、GITからインストールされているパッケージを削除してください)

  2. この場合、--ignore-installedはどうなるでしょうか?

  3. 他の解決策はありますか?選択の依存関係のインストールに関する

+1

'pip install'は既にインストールされているものはすべて無視します。 * "いくつかの要件を無視する" *ということは、コードはどのように機能するのですか? – jonrsharpe

+0

@jonrsharpeこのタスクでは必ずしも真ではありません。多くの場合、要件の一部はオプションであり、インストールを面倒にしてしまいます。私はしばしば、私がこの1つを必要としないことを知っているときに、窓のcvxpyからいくつかのソルバ(エコ)を削除します。しかし、それはlibの理解を必要とします。 – sascha

+0

あなたは 'setup.py'を提供していますので、どちらが必要なのか、どれがエキストラなのかを明確にすることができますか? – jonrsharpe

答えて

1

は、唯一の方法は、あなたの基準に従ってrequirements.txtファイルを/ grepをフィルタするために実際にあります。しかし、使用であるかもしれないいくつかの準備ができて解決策があります


あなたはvirtualenvのを持っているだけですぐに新しい要件またはバージョンの制限にアップグレードする必要がありますが、既存のパッケージを満たしていれば、アップグレードしない場合マニュアルが言うような基準、あなたは

pip install -U --upgrade-strategy=only-if-needed ... 

を使用することができます。

--upgrade-strategy <upgrade_strategy> 依存関係のアップグレードはどのように処理すべきかを決定します。 "熱心な" - 現在インストールされているバージョンがアップグレードされたパッケージの 要件を満たすかどうかにかかわらず、依存関係は にアップグレードされます。 「必要な場合のみ」 - は、アップグレードされたパッケージの要件を満たしていない場合にのみアップグレードされます。任意の依存性について


、典型的な溶液はsetuptoolsのextra requirementsあります。例えば、私は開発のための& DOC-建物の要件にそれを使用します。

次のように

# setup.py 
setup(
    ..., 
    extras_require={ 
     'dev': ["pdbpp", "ipython"], 
     'doc': ["sphinx"], 
    }, 
) 

を次に、(編集可能なライブラリとして)ローカルでは、PyPI/DevPIレポ、との両方から、それをインストールすることができます

pip install mylib[dev] 
pip install mylib[doc] 
pip install -e .[doc,dev] 

任意の依存関係を持つ「追加モード」の任意の名前を定義できます。

関連する問題