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
をインストールしてください)。
いいえ。要件ファイルは 固定 特定のバージョンになっています。要件がそのバージョンに設定されている場合、それらのバージョンを超えてアップグレードしようとしてはなりません。アップグレードする必要がある場合、要件ファイルで固定されていないバージョンに切り替える必要があります。
例:
lxml>=2.2.0
これにより、lxmlが2.2.0より新しいバージョンにアップグレードされます。
lxml>=2.2.0,<2.3.0
これにより、lxmlが2.2.0と2.3.0の間の最新バージョンにアップグレードされます。
あなたが試すことができます:
pip install --upgrade --force-reinstall -r requirements.txt
インストールされたパッケージを無視して、新しいパッケージをインストールすることもできます:
pip install -I, --ignore-installed -r requirements.txt
すでにこの質問に答えました こちら 。ここに私の解決策があります:
パッケージごとにパッケージをアップグレードし、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
引数をコマンドに追加してください。
完全な開示:このパッケージを作成しました。
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