web-dev-qa-db-ja.com

Pipと要件ファイルを使用して特定のパッケージをアップグレードする方法を教えてください。

私は自分の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`>

トータルパッケージの再ダウンロードを引き起こすフラグを見つけることができません。最初にアンインストールコマンドを実行し、次にインストールを実行しましたが、サイコロを実行しませんでした。多分私は何かが足りない?

364
gcaprio

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

<virtualenv>/bin/pip uninstall Django

それから私は<virtualenv>/build/Djangoディレクトリを削除して、そして最後に私は正しいバージョンをインストールしました:

<virtualenv>/bin/pip install Django

これが役立つことを願っています。

52

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

pip install Django --upgrade

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

pip install Django -U

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

1105
JoeyG

pip docs example 3に従って

pip install --upgrade Django

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

この種の方法を使用してDjango >= 1.2.4を必要とするsomepackageをアップグレードしたいとすると、somepackageおよびDjangoも最新のアップデートにアップグレードされます。安全のために

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

こうするとsomepackageがアップグレードされ、Djangoは1.2.4バージョンに保たれます

45
whale_steward

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

pip install Django --upgrade

です:

pip install Django -U
30
Aaron Lelevier

somepackageと呼ばれる特定のパッケージを1つだけアップグレードしたい場合は、最近のバージョンの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-packageのデフォルトの振る舞いはDjangoを利用可能な最新版にアップグレードすることです。そうしなければあなたのアプリケーションを壊すかもしれませんが、--upgrade-strategy only-if-needed依存パッケージでは必要に応じてのみアップグレードされます。

11
dr jimbob

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

これを行う便利な方法は、 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引数を追加してください。

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

10

通常、pipはそれ自身の後で片付けを行い、ビルドディレクトリの内容を削除します。これが行われないのは、次の場合だけです。

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

他のすべての場合では、あなたの環境を詰まらせるbuildディレクトリを持つべきではありません。

4
Burhan Khalid

「pip install -I --upgrade psutil --force」という問題を解決した後、psutilを新しいバージョンでアンインストールして、古いバージョンを突然インストールできるようにします(:

0
Eran Hpac