pipと要件ファイルを使用して特定のパッケージをアップグレードするにはどうすればよいですか?


436

私のDjangoプロジェクトでは、virtualenvで要件ファイルを使用してpipを使用しています。一部のパッケージ、特にDjango自体をアップグレードしようとしていますが、ソースコードの競合に関するエラーが発生します。

Source in `<virtualenv`>/build/Django has version 1.2.3 that conflicts with Django==1.2.4 (from -r requirements/apps.txt (line 3))

これは、要件ファイルでDjangoのバージョン番号を1.2.3から1.2.4に更新した後です。私は実際にアップグレードを行うためにこのコマンドを使用しています:

pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>

パッケージ全体の再ダウンロードをトリガーするフラグが見つかりません。最初にアンインストールコマンドを実行し、次にインストールを実行してみましたが、サイコロはありませんでした。多分私は何かが足りないのですか?


1
最近のバージョンのpipは、アップグレードするパッケージが依存する他のすべての依存関係を実際にアップグレードするため、@ dr-jimbobの回答を確認してください。
Lokesh Meher

回答:


61

それが正確にあなたの問題かどうかはわかりませんが、私の場合、Djangoを1.2.4にアップグレードできませんでした。常に1.2.3バージョンで終了していたため、次のコマンドでDjangoをアンインストールしました。

<virtualenv>/bin/pip uninstall Django

次に、<virtualenv>/build/Djangoディレクトリを削除し、最後に適切なバージョンをインストールしました。

<virtualenv>/bin/pip install Django

これがお役に立てば幸いです。


53
これはベストプラクティスではありません。pip install Django -Uまたはpip install Django --upgrade@JoeyGの回答に記載されているように使用します。
アフマド

@Ahmadは同意する。ピップと仮想環境でスムーズな更新プロセスがあるはずです。
Parth Joshi

1270

次のコマンドを実行し、1.2.3から1.4.0にアップグレードしました

pip install Django --upgrade

アップグレードのショートカット:

pip install Django -U

:アップグレードするパッケージに要件がある場合、このコマンドはすべての要件を利用可能な最新バージョンにさらにアップグレードします。最近のバージョンのpipでは、を指定することでこの動作を防止できます--upgrade-strategy only-if-needed。このフラグを使用すると、インストールされている依存パッケージのバージョンがアップグレードされたパッケージの要件を満たさなくなるまで、依存関係はアップグレードされません。


7
これは私のパッケージをすべて更新し、すべてを台無しにしてしまいました!!!! ドキュメントの状態:-すべてのパッケージを利用可能な最新バージョンにアップグレードします。これは正しいですか、それとも私は何か間違ったことをしましたか?
Prometheus

4
@OrbiterFleet「リクエスト」を更新する必要があったのでpip install Requests --upgrade、「リクエスト」のみをアップグレードしました。ドキュメントを表示すると、説明に「指定されたすべてのパッケージをアップグレードする」と記載されています。
harperville、2015年

31
注意、それはまた、すべての依存関係更新し、すべてを台無しにする可能性があります。最良のオプションは、パッケージをアンインストールして再インストールすることです。
marcelosalloum、2015年

3
特定のパッケージの使用をアップグレードするにはpip install --upgrade django==1.4.0
whale_steward 2016年

これは質問に応じた正しい答えであるか、質問自体が間違っています。
int soumen

51

ピップドキュメントの例3によると

pip install --upgrade django

しかし、私の経験では、この方法を使用すると、それに関連するすべてのパッケージもアップグレードされます。例:

アップグレードすると仮定somepackage必要とするdjango >= 1.2.4このような方法、それはまた、アップグレードされます使用してsomepackage、AND django最新のアップデートには。安全のためだけに:

# assume you want to keep django 1.2.4
pip install --upgrade somepackage django==1.2.4

これを行うsomepackageと、djangoが1.2.4バージョンにアップグレードされ、維持されます


良いキャッチですがdjango、メインパッケージとして始めたので説明が混乱しています。次に、例では、依存関係としてsomepackage使用djangoします。
長い

34

のショートカットコマンド--upgrade

pip install Django --upgrade

です:

pip install Django -U

7
既存の回答を編集して、(不完全な)回答ではなく、この情報を追加してみませんか?
a1an

@ a1anは、「推奨編集」に追加する必要があると思われる追加情報を提案してください。ありがとう
アーロンLelevier

4
つまり、JoeyGの回答を編集して、そこにコンテキストで指定したショートカットオプションを追加できます。
a1an

17

パッケージをアップグレードすると、古いパッケージはアンインストールされます。

これを行う便利な方法は、選択したパッケージ(またはすべてのパッケージ)のファイル内のバージョンも更新するこのpip-upgraderを使用することrequirements.txtです。

取り付け

pip install pip-upgrader

使用法

virtualenvをアクティブにします(重要なのは、アップグレードされたパッケージの新しいバージョンも現在のvirtualenvにインストールするためです)。

cd プロジェクトディレクトリに移動し、次のコマンドを実行します。

pip-upgrade

高度な使用法

要件が標準以外の場所にある場合は、引数として送信します。

pip-upgrade path/to/requirements.txt

アップグレードするパッケージがすでにわかっている場合は、引数として送信します。

pip-upgrade -p django -p celery -p dateutil

プレリリース/ポストリリースバージョンにアップグレードする必要がある場合は--prerelease、コマンドに引数を追加します。

完全な開示:このパッケージを作成しました。それが役に立てば幸い。


1
このアプローチですべてのパッケージを一度に(つまり、一覧表示せずに)アップグレードするオプションはありますか?
ビョークは1

1
@MikePalmiceはい:pip-upgrade -p all入力を必要とせずにすべてのパッケージをアップグレードし、要件ファイルを更新します。
Simion Agavriloaei

15

という特定の1つのパッケージのみをアップグレードする場合somepackage、pipの最新バージョンで使用する必要があるコマンドは次のとおりです。

pip install --upgrade --upgrade-strategy only-if-needed somepackage

これは、特定のバージョンのdjango(たとえば、Django = 1.9.x)でのみ動作するアプリケーションをdjangoで開発し、バグ修正/新機能で依存パッケージをアップグレードしたい場合に非常に役立ちます。アップグレードされたパッケージはdjango(ただし、1.5以降のdjangoのすべてのバージョンで動作します)。のデフォルトの動作は、pip install --upgrade django-some-packagedjangoを利用可能な最新バージョンにアップグレードすることです。そうしないと、アプリケーションが壊れる可能--upgrade-strategy only-if-needed性がありますが、依存パッケージでは、必要な場合にのみアップグレードされます。


4

通常、pipは自動的にクリーンアップし、ビルドディレクトリの内容を削除します。これを行わないのは、次の場合のみです。

  1. --no-installオプションを使用しました
  2. 編集可能なパッケージを使用しています
  3. インストールがキャンセルされたか、その他の方法で中断されました。

他のすべての場合ではbuild、環境を妨害しているディレクトリがあるべきではありません。


1

アップグレードする特定のバージョンを定義すると、アップグレードコマンドだけでなく、役に立ちました。

pip3 install larapy-installer==0.4.01 -U

0

それは私のために問題「pip install -I --upgrade psutil --force」を解決した後、新しいバージョンでpsutilをアンインストールし、古いバージョンを突然インストールできることを期待します(:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.