pip@Python3.7/FreeBSDのメモ

python3.7のpipコマンド関係で個人的覚えておきたい事関係。やれるところはできるだけ追加パッケージなしに行いたいところ、FreeBSDを優先するので他で動く保証はない。他で動かすことがあれば別にメモるかもしれないです...また、現行の知識から理解するため、FreeBSD特有の用語を使用したメモを書いている場合もあります。


■ドキュメント
https://pip.pypa.io/en/stable/ (英語)
https://pip.pypa.io/en/stable/reference/ (pipコマンド各オプションのman相当)

■ヘルプを見る
$ pip help
pipコマンドのヘルプ。全てに言えることだが、Generalを常に表示してくれるため、だいたいlessコマンドなどと併用することになる。

$ pip <pipのコマンド> -h
pipのコマンド(install, show, list, search, ...)のオプションを見る。


■パッケージのインストール
$ pip install <パッケージ名>
パッケージのインストール。pkg install <パッケージ名>とほぼ同じ。


■パッケージを検索する。
$ pip search <パッケージ名>
pipのリポジトリで登録されているパッケージを検索する。pkg search <パッケージ名>と同じようにパッケージ名に文字が含まれれば出力されるはずなのだが、現状何をしてもエラー判定となるため、追加で設定が必要かもしれない。


■インストール済みパッケージのアップデート
$  pip list -o | sed -n '3,$p' | cut -f1 -d' ' | xargs -I% pip install -U %
pipコマンドにはpkg upgrade相当のコマンドはないが、pip list -oコマンドによりアップデートできるパッケージが表示されるので、これをシェルスクリプトによるワンライナーでテキスト加工する。バージョンによってはpip upgradeコマンドが存在するらしいのだが、FreeBSD12.2R/Python3.7.9ではエラーが返ってきてしまった。

user@freebsd:~ % pip list -o
Package            Version Latest Type
------------------ ------- ------ -----
chardet            3.0.4   4.0.0  wheel
idna               2.10    3.0    wheel
importlib-metadata 2.1.1   3.3.0  wheel


通常のpip list -oコマンドの出力は上記のような感じ。意味合いとして最新版になっていないものだけ表示するというもの。なお、-oオプションは--outdateで置き換え可能。

user@freebsd:~ % pip list -o | sed -n '3,$p'
chardet            3.0.4   4.0.0  wheel
idna               2.10    3.0    wheel
importlib-metadata 2.1.1   3.3.0  wheel


項目行を抜くために sed -n '3,$p'コマンドを入れる。sedコマンドで3行目以降を出力させる。
  sed → コマンド
  -n → 出力コマンド以外の出力を行わない(後述のpオプションと併用が前提)
  '3,$p' → 3行目から最終行を指定


user@freebsd:~ % pip list -o | sed -n '3,$p' | cut -f1 -d' '
chardet
idna
importlib-metadata


1列目を抜き出したいので、cut -f1 -d' 'コマンドを追加する。
  cut → コマンド
  -f → 抜き出すフィールド。今回は1を指定。
  -d → 区切り文字(delimiter:デリミター)半角空白を使用。
  ※列を抜き出すのはawk '{print $2}'コマンド(このコマンドは2行目を抜き出す)を利用するのも手。


user@freebsd:~ % pip list -o | sed -n '3,$p' | cut -f1 -d' ' | xargs -I% pip install -U %
<省略...>

各行のパッケージ名をpip install -U <パッケージ名>で当て込んでいく。
  xargs → 1行ごとにコマンドを実行させる。
  -I% → 後述の%を入力文字列(行)に置き換える。
  pip install -U %→ pipコマンドにおけるインストール済みパッケージのアップデートコマンド。%は入力文字列(行)の挿入位置、この場合は一番最後。



この記事は以上。
必要に応じて更新を行う予定。

コメント