🔥

pip ライブラリを一括更新したかった

2023/05/06に公開

Raspberry PiCO2モニター CO2-mini | 自然環境測定器 - 製品情報 - 計測器のカスタムと、PM2.5などをチェックするセンサーをつけて、部屋の中の空気を管理しています。主にCO2やPM2.5を気にしてます。

今回それは置いといて。

これらを制御するためにPythonのライブラリを使っています。しばらく放置しすぎたために、pipでインストールするライブラリ群が古くなっていたので、今回いきおいあまってアップデートしてみたら、非常に大変で萎えたことを報告します。

いっぺんに更新ができない

bundle updateとかnpm updateをしたかっただけですが、pipには標準でそのような一括更新コマンドはないようです。残念です。仕方がないので pip-reviewライブラリをインストールしてpip-review autoしてみました。なるほど。

/tmpの容量が少ない

Raspberry Piに対応している某debian系OSでは、/tmpが32KBしか割り当てられていません。おかげさまで"OSError: [Errno 28] No space left on device"が発生しました。他のストレージに余裕があるのに、あえてここで/tmpへ容量を割り当てるのは面倒です。ということで、一時的にテンポラリフォルダを割り当てました。

$ mkdir -p $HOME/tmp
$ TMPDIR=$HOME/tmp pip-review auto

アンインストールできない

pipのパッケージアップデートでは、どうもアンインストール・インストールを普通にするようです。pipのバージョンが上がりすぎて、アンインストールできないパッケージが出てくるという厄介事に気がつきました。その所為でpip-reviewが止まります。

仕方がないので、個別にこれです。

$ pip install pip==8.1.1
$ pip uninstall PyYAML
$ pip install --upgrade pip
$ pip install PyYAML

8.1.1の何がよいかはわかりませんが、1つ1つこれでちまちま対応しました。いやね、pip-review使わずに、このアンインストールをうまく制御するスクリプトを書いてくれている人もいるんですが、そういうことじゃない。パッケージ管理ツールが悪い。

こういう地味に使いづらいところも含めて、Pythonが苦手です。

参考情報

Discussion