569

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

>/build/Djangoのソースには<virtualenv、Django==1.2.4 と競合するバージョン 1.2.3 があります (-r requirements/apps.txt (行 3) から)

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

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

パッケージ全体の再ダウンロードをトリガーするフラグが見つかりません。最初にアンインストール コマンドを実行してから、インストールを実行しようとしましたが、さいころはありませんでした。何か不足していますか?

4

10 に答える 10

1518

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

pip install Django --upgrade

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

pip install Django -U

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

于 2012-05-03T22:56:40.410 に答える
78

最初に、最も投票された回答を確認したことを確認してください。


それがあなたの問題なのかどうかはわかりませんが、私の場合、Django を 1.2.4 にアップグレードできませんでした。

<virtualenv>/bin/pip uninstall Django

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

<virtualenv>/bin/pip install Django
于 2011-01-03T09:56:19.153 に答える
72

pipドキュメントの例 3 によると:

pip install --upgrade django

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

somepackageこの種の方法を使用してアップグレードする必要があると仮定するとDjango >= 1.2.4、それもアップグレードsomepackage djangoれ、最新の更新に更新されます。安全のために、次のことを行ってください。

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

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

于 2015-01-07T05:16:15.820 に答える
18

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

これを行う便利な方法は、選択したパッケージ (またはすべてのパッケージ) のファイル内のバージョンも更新するこの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、コマンドに引数を追加します。

完全な開示: 私はこのパッケージを書きました。

于 2017-04-27T20:22:15.960 に答える
4

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

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

他のすべての場合ではbuild、環境を詰まらせるディレクトリを作成しないでください。

于 2012-05-04T00:43:14.780 に答える