すべてのPythonパッケージをpipでアップグレードする方法は?


2051

すべてのPythonパッケージを一度にアップグレードできますpipか?

:公式の課題追跡にこれに対する機能リクエストあります


37
ソフトウェアの腐敗に注意してください。依存関係をアップグレードすると、アプリが壊れる可能性があります。インストールされているすべてのパッケージの正確なバージョンをリストすることができますpip freezebundle installまたはなどnpm shrinkwrap)。いじくり回す前にそのコピーを保存するのが最善です。
大佐パニック

これを行うpipときは、アップグレード時にインストールが失敗することに注意してくださいrequests。エラーメッセージはcannot import name IncompleteReadです。
Paul Rooney

11
:私は答えの束と、新しい(したがって、低得点の答えを)試してみましたはるかに優れた出力生成stackoverflow.com/questions/2720014/...
FauChristian

最新の機能リクエストとディスカッション:github.com/pypa/pip/issues/4551
cledoux

この質問は非常に古く、非常に有用です。これからここに来る人には、これを行うための新しい公式の最良の方法があることを警告したいと思います:pipenv。ドキュメントはここにあります:docs.pipenv.org/basicsと著者のPycon 2018はそれについて話します:youtube.com/watch ?v=GBQAKldqgZs 。幸せなコーディング!
Malik

回答:


2260

組み込みのフラグはまだありませんが、使用できます

pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

注:これには無限の可能性のあるバリエーションがあります。私はこの答えを短くシンプルにしようとしていますが、コメントのバリエーションを提案してください!

古いバージョンのではpip、代わりにこれを使用できます。

pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip install -U

grep@jawacheにより示唆されるように、編集可能(「-e」)のパッケージ定義をスキップすることです。(はい、grep+ cutsedor awkまたはperlorまたは...に置き換えることができます)。

-n1フラグはxargs、1つのパッケージの更新が失敗した場合にすべての停止を防止します(@andsensに感謝)。


59
右:(問題は現在github.com/pypa/pip/issues/59に存在します。しかし、すべての提案は「そうですが、XがYを行う正しい方法であるかどうか確信が持てます」で答えられるようです...実用性が純粋さを
上回ってい

20
また、通常のパッケージマネージャー(apt-getやSynapticなど)でインストールされたパッケージも出力します。これを実行するとpip install -U、すべてのパッケージが更新されます。apt-getとの競合を引き起こす可能性があります。
Jabba

8
grepをegrep -v '^(\-e |#)'に変更するのはどうですか(ubuntu 12.10で実行すると、この行が表示されます: "## FIXME:このパッケージのdependency_linksでsvn URLが見つかりませんでした:"
LasseValentini

32
tee元のバージョンのリストを取得できるように、実際のアップグレードを実行する前にaを投入します。たとえば、 pip freeze --local | tee before_upgrade.txt | ...このようにすると、問題が発生した場合に簡単に元に戻すことができます。
Emil H

10
私は迷惑なエラーメッセージを回避するために追加-Hsudoました: $ pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 sudo -H pip install -U
マリオS

683

次のPythonコードを使用できます。とは異なりpip freeze、これは警告とFIXMEエラーを出力しません。 ピップ<10.0.1の場合

import pip
from subprocess import call

packages = [dist.project_name for dist in pip.get_installed_distributions()]
call("pip install --upgrade " + ' '.join(packages), shell=True)

pip> = 10.0.1の場合

import pkg_resources
from subprocess import call

packages = [dist.project_name for dist in pkg_resources.working_set]
call("pip install --upgrade " + ' '.join(packages), shell=True)

21
これは驚くほどうまく機能します...タスクが本当に長い時間かかるときはいつもとても満足しています...そしてあなたにたくさんの新しいものを与えます!PS:OS Xを使用している場合は、rootとして実行してください。
Alex Grey

52
サブプロセスを呼び出さずにpipを使用してインストールする方法はありませんか?のようなものimport pip pip.install('packagename')
内部石

6
これをfabfile.pyでラップしました。ありがとう!
Josh K

5
@BenMezger:virtualenvでシステムパッケージを使用するべきではありません。また、本当に少数の信頼できる有名なプログラムをrootとして実行するべきではありません。--no-site-packagesを使用してvirtualenvsを実行します(最近のバージョンのデフォルト)。
jeffcook2150 2013

3
この質問に賛成です。パッケージがこれ以上見つからない場合、選択した回答(上記)は失敗します。このスクリプトは、次のパッケージに続くだけです。
Josh

643

すべてのローカルパッケージをアップグレードするには、あなたが使うことができますpip-review

$ pip install pip-review
$ pip-review --local --interactive

pip-reviewはのフォークですpip-tools@knedlseppによって言及されたpip-tools問題を参照してください。パッケージは機能しますが、パッケージは機能しなくなります。pip-reviewpip-tools

pip-reviewバージョン0.5以降の Windowsで動作します。


2
@hauzer:けれどもそれは、Python 3をサポートしていない、それはバグかもしれない
JFS

7
@mkoistinenこれは良いツールですが、PIPに統合されるまでは、誰もがやりたいとは限らない何かをインストールすることになります。
2014

2
@ダニエル:pip-toolsは機能しなくなり、pip-review(pip-toolsのフォーク)は機能します。
jfs

7
pip-reviewは問題なく動作します(少なくともPythonバージョン3.5.0の場合)
FredrikHedman

15
対話モードなしですべてを更新するには:pip-review --local --auto
ドラミニ

333

Windowsで動作します。他の人にも良いはずです。($は、コマンドプロンプトで使用しているディレクトリです。例:C:/ Users / Username>)

行う

$ pip freeze > requirements.txt

テキストファイルを開き、交換する==>=、および実行

$ pip install -r requirements.txt --upgrade

特定のパッケージでアップグレードが滞っている(場合によっては数が多い)問題がある場合は、ディレクトリ($)に移動し、名前をコメント化して(その前に#を追加)、アップグレードを再度実行します。後でそのセクションのコメントを解除できます。これは、Pythonグローバル環境のコピーにも最適です。


別の方法:

また、pip-reviewメソッドも気に入っています。

py2
$ pip install pip-review

$ pip-review --local --interactive

py3
$ pip3 install pip-review

$ py -3 -m pip_review --local --interactive

「a」を選択してすべてのパッケージをアップグレードできます。1つのアップグレードが失敗した場合は、再度実行して次のアップグレードを続行します。


29
あなたは削除する必要がありますrequirements.txt=={version}。例:すべての行のpython-dateutil==2.4.2to python-dateutil
youngminz 2016年

4
これは実際にはmacOSのパッケージをアップグレードしないことがわかりました。
jkooker 2017年

10
@youngminzこれを修正するために、「pip install ...」を実行する前に、エディター/ ideで「Replace all "=="> "> ="」をすばやくお勧めします
Amaury Liet

7
Linuxの場合:$ pip freeze | cut -d '=' -f1> requirements.txtバージョンを削除するには
Cavaz

1
使用するシェルがbashの場合、pip3 install -r <(pip3 freeze) --upgrade 効果的に<(pip3 freeze)匿名コマンドである1つのコマンドに短縮できますが、ファイルオブジェクトとして機能します
Sergiy Kolodyazhnyy

128

Rob van der Woudeによる優れたドキュメントを参照FORした後のWindowsバージョン

for /F "delims===" %i in ('pip freeze -l') do pip install -U %i

19
for /F "delims= " %i in ('pip list --outdated') do pip install -U %i 「古くなった」パッケージのみを更新するため、より
迅速

3
@RefaelAckermannこれはオリジナルよりも遅いと思います:)どのパッケージが古いかを知るには、pipはまず各パッケージの最新バージョンを確認する必要があります。更新時の最初のステップとまったく同じで、新しいバージョンがない場合は続行されません。ただし、バージョンでは、pipはバージョンを2回チェックします。1回目は古いパッケージのリストを確立し、2回目はこのリストのパッケージを更新します。
Piotr Dobrogost 2017年

2
@RefaelAckermannピップをスピンアップすることは、ネットワーク経由でパッケージのバージョンをチェックするよりも桁違いに速いため、スピンアップの数ではなく、最適化する必要があるチェックの数です。私はn個のチェックを行い、あなたはn + m個のチェックを行います。
Piotr Dobrogost 2017年

2
+1-2019年6月20日です。Windows10でPython 3.7.3を使用しています。これは、すべてのローカルパッケージを更新するための最良の方法でした。
MacItaly

1
出力の最初の2行をスキップする必要があります:for /F "skip=2 delims= " %i in ('pip list --outdated') do pip install --upgrade %i。これをバッチファイルから実行する場合は、の%%i代わりに使用してください%i。また、pipを使用してこのコマンドを実行する前に更新する方がわかりやすいことにも注意してくださいpython -m pip install --upgrade pip
アンディ

127

pipupgradeを使用してください!

$ pip install pipupgrade
$ pipupgrade --verbose --latest --yes

pipupgradeは、システム、ローカル、またはパッケージをrequirements.txtファイルからアップグレードするのに役立ちます!また、変更を壊さないパッケージを選択的にアップグレードします。また、pipupgradeは、複数のPython環境内に存在するパッケージを確実にアップグレードします。Python2.7 +、Python3.4 +およびpip9 +、pip10 +、pip18 +、pip19 +と互換性があります。

ここに画像の説明を入力してください

注:私はツールの作成者です。


1
このメソッドは、@ rbpの答えよりもはるかにクリーンな出力を持っています
Gaia

7
いいアイデアですが、Checking...試してみると永遠に行き詰まっています。
CGFoX

1
ただ、チェックでそれをインストールしても立ち往生[0;93mChecking...[0m
クリス・

1
@nathandrakeは問題ページで問題を開くことに気をつけますか?
アキレスガスパーラスキナ

2
Windows 10およびPython ModuleNotFoundError: No module named 'ctypes.windll'
3.7.5で

74

古くなったパッケージを印刷できます

pip freeze | cut -d = -f 1 | xargs -n 1 pip search | grep -B2 'LATEST:'

14
virtualenvの内部では、私はこのようにそれを行う:pip freeze --local | cut -d = -f 1 | xargs -n 1 pip search | grep -B2 'LATEST:'
ジェレミー・ブランチャード

現在では、これも使用できますpython -m pip list outdated(ただし、要件の形式ではありません)。
ジャックトース2016年

74

このオプションは私にはもっと簡単で読みやすいようです:

pip install -U `pip list --outdated | awk 'NR>2 {print $1}'`

説明はpip list --outdated、この形式ですべての古いパッケージのリストを出力することです:

Package   Version Latest Type 
--------- ------- ------ -----
fonttools 3.31.0  3.32.0 wheel
urllib3   1.24    1.24.1 wheel
requests  2.20.0  2.20.1 wheel

awkコマンドでNR>2、最初の2つのレコード(行)をスキップし、{print $1}各行の最初の単語を選択します(SergioAraujoによって提案されたように、実際にレコードのスキップを処理できるtail -n +3ため、削除awkしました)。


1つのアップグレードが失敗した場合、アップグレードは行われません。
ボリス

2
テールawk 'NR>2 {print $1}'が出力をクレンジングするのを回避できます
SergioAraujo

@SergioAraujo、これは解決策もきれいに見えます、先端に感謝します!
マルク

67

次のワンライナーが助けになるかもしれません:

(pip> 20.0)

pip list --format freeze --outdated | sed 's/=.*//g' | xargs -n1 pip install -U

古いバージョン:

pip list --format freeze --outdated | sed 's/(.*//g' | xargs -n1 pip install -U

xargs -n1 エラーが発生しても続行します。

何が省略され、何がエラーを発生させるかについてさらに細かい制御が必要な場合は、-n1フラグを追加せず、個別のエラーごとに次の行を「パイプ」して、無視するエラーを明示的に定義する必要があります。

| sed 's/^<First characters of the error>.*//'

これが実際の例です:

pip list --format freeze --outdated | sed 's/=.*//g' | sed 's/^<First characters of the first error>.*//' | sed 's/^<First characters of the second error>.*//' | xargs pip install -U

'Could'と 'Some'で始まる行のフィルターを追加する必要があったのは、pipがstdoutに警告を送信しているためです:(
Chip Camden

OK、これは公平| sed 's/^<First characters of the error>.*//'です。必要な数だけ追加できます。ありがとうございました!
raratiru 2015年

14
または:pip list --outdated | cut -d ' ' -f 1 | xargs -n 1 pip install --upgrade
Jens

51

より堅牢なソリューション

pip3の場合、これを使用します。

pip3 freeze --local |sed -rn 's/^([^=# \t\\][^ \t=]*)=.*/echo; echo Processing \1 ...; pip3 install -U \1/p' |sh

ピップの場合は、3を削除するだけです。

pip freeze --local |sed -rn 's/^([^=# \t\\][^ \t=]*)=.*/echo; echo Processing \1 ...; pip install -U \1/p' |sh

OSXの奇妙さ

OSXは、2017年7月現在、sedの非常に古いバージョン(12歳)が同梱されています。拡張正規表現を取得するには、上記のソリューションで-rの代わりに-Eを使用します。

一般的なソリューションで問題を解決する

このソリューションは適切に設計およびテストされています1が、最も一般的なソリューションでも問題があります。

  • pipコマンドライン機能の変更による移植性の問題
  • 一般的なpipまたはpip3子プロセスの失敗によるxargsのクラッシュ
  • 生のxargs出力からの混雑したロギング
  • 潜在的にそれをアップグレードしながら、Python-to-OSブリッジに依存3

上記のコマンドは、sedおよびshと組み合わせて最も単純で移植性の高いpip構文を使用して、これらの問題を完全に克服します。sed操作の詳細は、コメント付きバージョン2で精査できます。


詳細

[1] Linux 4.8.16-200.fc24.x86_64クラスターでテストおよび定期的に使用され、他の5つのLinux / Unixフレーバーでテストされました。Windows 10にインストールされたCygwin64でも動作します。iOSでのテストが必要です。

[2]コマンドの構造をより明確に見るために、これはコメント付きの上記のpip3コマンドとまったく同じです。

# match lines from pip's local package list output
# that meet the following three criteria and pass the
# package name to the replacement string in group 1.
# (a) Do not start with invalid characters
# (b) Follow the rule of no white space in the package names
# (c) Immediately follow the package name with an equal sign
sed="s/^([^=# \t\\][^ \t=]*)=.*"

# separate the output of package upgrades with a blank line
sed="$sed/echo"

# indicate what package is being processed
sed="$sed; echo Processing \1 ..."

# perform the upgrade using just the valid package name
sed="$sed; pip3 install -U \1"

# output the commands
sed="$sed/p"

# stream edit the list as above
# and pass the commands to a shell
pip3 freeze --local |sed -rn "$sed" |sh

[3] PythonまたはPIPコンポーネントのアップグレードでも使用されるPythonまたはPIPコンポーネントのアップグレードは、デッドロックまたはパッケージデータベースの破損の潜在的な原因になる可能性があります。


1
sedOS XのジュラシックBSDを克服する別の方法は、gsed代わりに(GNU sed)を使用することです。それを取得するにはbrew install gnu-sed
Walter

@WalterTross ...ジュラ紀...形容詞の使い方が良い。そのため、ターミナル上で監査ログを使用して更新PIPパッケージをグループ化する方法が2つあります。(1)回答のように-Eオプションを使用し、(2)gsedをインストールしてジュラ紀を離れます。
ダグラスダシーコ

41

これはもっと簡潔に見えます。

pip list --outdated | cut -d ' ' -f1 | xargs -n1 pip install -U

説明:

pip list --outdated このような行を取得します

urllib3 (1.7.1) - Latest: 1.15.1 [wheel]
wheel (0.24.0) - Latest: 0.29.0 [wheel]

ではcut -d ' ' -f1-d ' '「スペース」を区切り文字として設定し-f1ます。これは、最初の列を取得することを意味します。

したがって、上記の行は次のようになります。

urllib3
wheel

次に、に渡してxargs、コマンドを実行し、pip install -U各行を引数として追加します

-n1各コマンドpip install -Uに渡される引数の数を1に制限します


私はこの警告を受けましたDEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
Reman

2
@Reman:Pip v9.0.1を使用しているためです。これは単なる非推奨メッセージであり、将来のPipリリースでは一部の機能が存続しないことを意味します。何も心配する必要はありません;)
AlessioX 2016

ただし、これは最終的なソリューションとしてマークする必要があります。実際、受け入れられた回答はすべてのpipパッケージで実行されます。これは、1つまたは2つのパッケージのみを更新する必要がある場合、時間の無駄になります。このソリューションは、代わりに、古いパッケージ全体で実行されます
AlessioX

34

アップグレードについても同じ問題がありました。ことは、私はすべてのパッケージをアップグレードすることはありません。プロジェクトが壊れる可能性があるので、必要なものだけをアップグレードします。

パッケージごとにアップグレードし、requirements.txtファイルを更新する簡単な方法がなかったため、選択したパッケージ(またはすべてのパッケージ)のファイル内のバージョンも更新するrequirements.txtこのpip-upgraderを作成しました。

取り付け

pip install pip-upgrader

使用法

virtualenvをアクティブにします(重要なのは、アップグレードされたパッケージの新しいバージョンも現在のvirtualenvにインストールするためです)。

cd プロジェクトディレクトリに移動し、次のコマンドを実行します。

pip-upgrade

高度な使用法

要件が標準以外の場所にある場合は、引数として送信します。

pip-upgrade path/to/requirements.txt

アップグレードするパッケージがすでにわかっている場合は、引数として送信します。

pip-upgrade -p django -p celery -p dateutil

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

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


8
これは、pipがデフォルトで行うべきことです。
Nostalg.io 2017年

いくつかの文字エスケープが私のWindowsマシンで正しく機能していないように見えますが、それ以外は問題ありません
Luke

Windowsでは実際にはテストしていませんが、仮想マシンをインストールします。ありがとう
Simion Agavriloaei 2017

virtualenv有効になっていない場合pip-upgrade --skip-virtualenv-check
モールス

2
これは、共通、開発、製品の要件を持つ要件フォルダーでも機能します。単に素晴らしい!
cwhisperer



22

virtualenvを使用していて、virtualenvに追加されたパッケージをアップグレードするだけの場合は、次のようにすることができます。

pip install `pip freeze -l | cut --fields=1 -d = -` --upgrade


18

Windows Powershellソリューション

pip freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}

pip list --outdated | %{$_.split('==')[0]} | %{pip install --upgrade $_}
Foad

2
おそらくpip list --outdated --format freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}もっと適切でしょう。
ブレインプロット

16

awk更新パッケージを使用: pip install -U $(pip freeze | awk -F'[=]' '{print $1}')

Windows PowerShellの更新 foreach($p in $(pip freeze)){ pip install -U $p.Split("=")[0]}


ピップフリーズ| awk -F '[=]' '{print $ 1}' | xargs pip install -U
JohnDHH

そして、python 3の場合... pip3 install -U $(pip3 freeze | awk -F '[=]' '{print $ 1}')
Jimmy MG Lim

12

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

for i in ` pip list|awk -F ' ' '{print $1}'`;do pip install --upgrade $i;done

これは、pipパッケージを最も簡潔に更新するための最もクリーンで最も読みやすい方法です。すごい。
Mark Shust、M.academy 2013年

12

かなり驚くべき卵黄はこれを簡単にします。

pip install yolk3k # don't install `yolk`, see https://github.com/cakebread/yolk/issues/35
yolk --upgrade

ヨークの詳細情報:https : //pypi.python.org/pypi/yolk/0.4.3

それはあなたがおそらく役に立つと思うであろう多くのことをすることができます。


3
回答がからに変更されyolkましたyolk3k。元の回答には間違いなくpython3に関する問題がありました。
AXO

10

@Ramanaの答えは、私にとってここで最もうまくいきましたが、私はいくつかのキャッチを追加する必要がありました:

import pip
for dist in pip.get_installed_distributions():
    if 'site-packages' in dist.location:
        try:
            pip.call_subprocess(['pip', 'install', '-U', dist.key])
        except Exception, exc:
            print exc

site-packages開発パッケージはシステムのsite-packagesディレクトリにないため、このチェックでは除外されます。try-exceptは、PyPIから削除されたパッケージを単にスキップします。

@endolith:私も簡単にできることを望んでいましたがpip.install(dist.key, upgrade=True)、pipがコマンドライン以外で使用されることを意図していたようには見えません(ドキュメントには内部APIが記載されておらず、pip開発者は使用していませんでした) docstrings)。


Ubuntu(およびその他のDebian派生物)では、pip明らかにパッケージを/usr/local/lib/python2.7/dist-packagesまたは同様に配置します。ifこの場合、ステートメントで「site-packages」の代わりに「/ usr / local / lib /」を使用できます。
drevicko 2013年

10

pip_upgrade_outdated仕事をしていません。そのドキュメントによると:

usage: pip_upgrade_outdated [-h] [-3 | -2 | --pip_cmd PIP_CMD]
                            [--serial | --parallel] [--dry_run] [--verbose]
                            [--version]

Upgrade outdated python packages with pip.

optional arguments:
  -h, --help         show this help message and exit
  -3                 use pip3
  -2                 use pip2
  --pip_cmd PIP_CMD  use PIP_CMD (default pip)
  --serial, -s       upgrade in serial (default)
  --parallel, -p     upgrade in parallel
  --dry_run, -n      get list, but don't upgrade
  --verbose, -v      may be specified multiple times
  --version          show program's version number and exit

ステップ1:

pip install pip-upgrade-outdated

ステップ2:

pip_upgrade_outdated

1
ステップ1:pip install pip-upgrade-
outdated

9

プルリクエストを介してpipフォークに送信されます。その間、私が書いたこのpipライブラリソリューションを使用します。

from pip import get_installed_distributions
from pip.commands import install

install_cmd = install.InstallCommand()

options, args = install_cmd.parse_args([package.project_name
                                        for package in
                                        get_installed_distributions()])

options.upgrade = True
install_cmd.run(options, args)  # Chuck this in a try/except and print as wanted

エラー処理付きのバージョン(コメントごと):gist.github.com/SamuelMarks/7885f2e8e5f0562b1063
Samuel Marks

9

これは私にはうまくいったようです...

pip install -U $(pip list --outdated|awk '{printf $1" "}')

printfその後、パッケージ名を適切に区切るためにスペースを使用しました。


7

これはPython 3用のPowerShellソリューションです。

pip3 list --outdated --format=legacy | ForEach { pip3 install -U $_.split(" ")[0] }

そしてPython 2の場合:

pip2 list --outdated --format=legacy | ForEach { pip2 install -U $_.split(" ")[0] }

これにより、パッケージが1つずつアップグレードされます。だから

pip3 check
pip2 check

その後、依存関係が壊れていないことを確認する必要があります。



7

Windowsで最も短くて簡単です。

pip freeze > requirements.txt && pip install --upgrade -r requirements.txt && rm requirements.txt

Windows 7の@Enkouyamiでは、このコマンドは-rなしでは機能しません。-rは、要件ファイルへのパスを除外する必要があります。
Chockomonkey

6

私のスクリプト:

pip list --outdated --format=legacy | cut -d ' ' -f1 | xargs -n1 pip install --upgrade

6

これはもっと効果的ではないですか?

pip3 list -o | grep -v -i warning | cut -f1 -d' ' | tr " " "\n" | awk '{if(NR>=3)print}' | cut -d' ' -f1 | xargs -n1 pip3 install -U 
  1. pip list -o 古いパッケージをリストします。
  2. grep -v -i warningwarning更新時のエラーを回避するために反転一致をオンにする
  3. cut -f1 -d1' ' 最初の単語-古いパッケージの名前を返します。
  4. tr "\n|\r" " "からの複数行の結果をcut、スペースで区切られた単一行のリストに変換します。
  5. awk '{if(NR>=3)print}' ヘッダー行をスキップします
  6. cut -d' ' -f1 最初の列をフェッチします
  7. xargs -n1 pip install -U 左側のパイプから引数を1つ取り、それをコマンドに渡してパッケージのリストをアップグレードします。

これが私の出力です。kerberos iwlib PyYAML Could pygpgme Could Could Could ...すべての「Could」に注意してください。これらはpip list -o、「要件<パッケージ>を満たすダウンロードを見つけることができませんでした」の出力に由来します
DrStrangepork

の出力を貼り付けることができますpip list -oか?
Alex V

コメントはこれをうまくフォーマットしていませんが、ここにスニペットがあります(行末は ';'でマークされています):# pip list -o; urwid (Current: 1.1.1 Latest: 1.3.0); Could not find any downloads that satisfy the requirement python-default-encoding; pycups (Current: 1.9.63 Latest: 1.9.68); Could not find any downloads that satisfy the requirement policycoreutils-default-encoding; Could not find any downloads that satisfy the requirement sepolicy;
DrStrangepork

使用すべきではないすべての行を除外する代わりに、更新が存在する行を除外することをお勧めしますpip install -U $(pip list -o | grep -i current | cut -f1 -d' ' | tr "\n|\r" " ") 。そうしないと、不要な1行を簡単に見逃して、DrStrangeprkが述べた結果が得られる可能性があります。
アンチバス2015

xargs代わりに使用することを強くお勧めします。pip list -o | awk '/Current:/ {print $1}' | xargs -rp -- pip install -Uこの-rフラグpip install -Uは、古いパッケージがない場合に実行されないようにします。この-pフラグは、コマンドを実行する前にユーザーに確認を求めます。-n1フラグを追加して、各パッケージを個別にインストールする前にプロンプ​​トを表示させることができます。

6

adm権限を持つpowershell 5.1の1行、python 3.6.5およびpip ver 10.0.1:

pip list -o --format json | ConvertFrom-Json | foreach {pip install $_.name -U --no-warn-script-location}

リストに壊れたパッケージや特別なホイールがない場合はスムーズに動作します...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.