web-dev-qa-db-ja.com

pipコマンドを使用して、requirements.txtからpythonパッケージをアップグレードします

Pipコマンドを使用して、requirements.txtファイルからすべてのpythonパッケージをアップグレードするにはどうすればよいですか?

以下のコマンドで試しました

$ pip install --upgrade -r requirements.txt

pythonパッケージにはバージョン番号(Django==1.5.1)のサフィックスが付いているため、アップグレードされていないようです。 requirements.txtファイルを手動で編集するよりも良い方法はありますか?

編集

Andyが回答で述べたように、パッケージは特定のバージョンに固定されているため、pipコマンドを使用してパッケージをアップグレードすることはできません。

しかし、次のコマンドを使用してpip-toolsでこれを実現できます。

$ pip-review --auto

これにより、requirements.txtからすべてのパッケージが自動的にアップグレードされます(pip installコマンドを使用してpip-toolsをインストールしてください)。

74
abhiomkar

いいえ。要件ファイルは 固定 特定のバージョンになっています。要件がそのバージョンに設定されている場合、それらのバージョンを超えてアップグレードしようとしてはなりません。アップグレードする必要がある場合、要件ファイルで固定されていないバージョンに切り替える必要があります。

例:

lxml>=2.2.0

これにより、lxmlが2.2.0より新しいバージョンにアップグレードされます。

lxml>=2.2.0,<2.3.0

これにより、lxmlが2.2.0と2.3.0の間の最新バージョンにアップグレードされます。

30
Andy

あなたが試すことができます:

pip install --upgrade --force-reinstall -r requirements.txt

インストールされたパッケージを無視して、新しいパッケージをインストールすることもできます:

pip install -I, --ignore-installed -r requirements.txt
58
Freelancer

すでにこの質問に答えました こちら 。ここに私の解決策があります:

パッケージごとにパッケージをアップグレードし、requirements.txtファイルを更新する簡単な方法はなかったため、これを書きました pip-upgrader = whichは、選択したパッケージ(またはすべてのパッケージ)の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引数をコマンドに追加してください。

完全な開示:このパッケージを作成しました。

55

Bashを使用してそれを行うことができなかったため、バージョンなしで新しい要件ファイルを作成して使用するpythonモジュールを作成しました。

data = open('requirements-prod.pip', 'r')
data2 = open('requirements-prod-no-version.pip', 'w')
for line in data.readlines():
    new_line = line[:line.index('==')]
    data2.write(new_line + '\n')
data2.flush()

次に、新しいファイルpip install -U -r requirements-prod-no-version.pipからライブラリをインストールします

最後に、元のファイルのバージョンをフリーズしますpip freeze > requirements-prod.pip

2
Montaro