2010-12-27 4 views
228

私は、私のDjangoプロジェクトのために、virtualenvの要件ファイルとともにpipを使用しています。私は自分自身を、特に、いくつかのパッケージをアップグレードジャンゴしようとしている、と私は、ソースコードの競合に関するエラーを取得しています:pipとrequirementsファイルを使用して特定のパッケージをアップグレードするにはどうすればよいですか?

に1.2.4に1.2.3からの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)) 

私要件ファイル。私はトータルパッケージの再ダウンロードをトリガーする任意のフラグを見つけることができません

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

:実際にアップグレードを行うために、私は、このコマンドを使用しています。私はアンインストールコマンドを最初に実行してから、インストールは実行していましたが、サイコロはインストールしませんでした。多分私は何かを欠いているでしょうか?

+0

@ dr-jimbobの答えをチェックしてください。最近のバージョンのpipは、実際にアップグレードしているパッケージが依存する他のすべての依存関係をアップグレードするためです。 –

答えて

25

私の場合、Djangoを1.2.4にアップグレードすることができませんでした。私はいつも1.2.3バージョンで終了していましたので、Djangoをアンインストールしました:

<virtualenv>/bin/pip uninstall Django 

は、その後、私は<virtualenv>/build/Djangoディレクトリを削除し、最終的に私はとの適切なバージョンをインストール:

<virtualenv>/bin/pip install Django 

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

776

私は、次のコマンドを実行し、それがアップグレードのために1.2.3

pip install Django --upgrade 

1.4.0へのショートカットからアップグレード:アップグレードされたパッケージは、いずれかを持っている場合:

pip install Django -U 

を要件このコマンドは、すべての要件を最新のバージョンにアップグレードします。最近のバージョンのpipでは、you can prevent this behavior by specifying --upgrade-strategy only-if-neededです。このフラグを使用すると、依存パッケージがインストールされたバージョンでアップグレードパッケージの要件を満たさない限り、依存関係はアップグレードされません。

+7

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

+4

@OrbiterFleet私は 'pip install Requests --upgrade'と* only *" requests "をアップグレードしたので、"要求 "を更新する必要がありました。説明では、ドキュメントを表示すると、「すべての*指定された*パッケージをアップグレードする」と表示されます。 – harperville

+24

注意**また、**すべての依存関係を更新**し、すべてを混乱させる可能性があります。最善の方法は、パッケージをアンインストールして再インストールすることです。 – marcelosalloum

2

通常、pipはそれ自身の後でクリーンアップし、ビルドディレクトリの内容を削除します。

  1. はあなたが編集可能なパッケージを使用している
  2. インストールがキャンセルあるいは中断されたた--no-installオプション
  3. を使用:それはこれをしないだけの時間があればです。

その他の場合は、buildというディレクトリが環境を塞いではいけません。

23

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

pip install Django --upgrade 

は、次のとおりです。

pip install Django -U 
+3

既存の回答を編集して、(不完全な)回答の代わりにこのビットを追加するのはどうですか? – a1an

+0

@ a1an「推奨編集」に追加する必要があると思われる追加情報をお勧め​​します。おかげで –

+2

私はあなたがそこに文脈で提供したショートカットオプションを追加して、JoeyGによって与えられた答えを編集できることを意味します。 – a1an

31
pip install --upgrade django 

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

この種の方法を使用してdjango >= 1.2.4を必要とするsomepackageをアップグレードするとします。somepackagedjangoを最新のアップデートにアップグレードします。

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

だけsomepackageと呼ばれる一つの特定のパッケージをアップグレードしたい場合はsomepackageがアップグレードされますこれを実行し、1.2.4バージョン

5

にジャンゴを保ち、あなたは最近のバージョンでは使用すべきコマンド:ちょうど安全DOなければピップの

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

これはあなたが現在のみジャンゴの特定のバージョンで動作しますジャンゴでアプリケーションを開発する際に非常に便利ですが(ジャンゴ= 1.9.xを言う)、バグをいくつかの依存パッケージをアップグレードしたいです-fix/new featu reとアップグレードされたパッケージはdjangoに依存しています(ただし、1.5以降のdjangoのバージョンで動作します)。 pip install --upgrade django-some-packageのデフォルトの動作は、djangoを利用可能な最新バージョンにアップグレードすることです。--upgrade-strategy only-if-needed依存パッケージは、必要に応じてアップグレードされるだけですが、アプリケーションを破壊する可能性があります。

4

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

この便利な方法は、この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 

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

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

関連する問題