🐍

2つの pip freeze を比較するツール作った

2022/11/15に公開1

おことわり

この記事と背景的なものは同じです。

https://zenn.dev/hassaku63/articles/75bc1b56b94528

引き継いで以降ずっと塩漬けしてた古いプロジェクトの依存関係を更新しよう、という仕事が発生したのですが、依存関係の定義である requirements.txt が pip freeze の出力そのままリダイレクトしたような内容になっていて少々困りました。

requirements をダイエットしたい、という用事が上記の記事と同じで、今回は実際にダイエットさせてみた requirements と元のファイルでそれぞれ何がどのバージョンで入っている状態なのか比較したい...というのがやりたいことになります。

で、たぶん他にもっと良いツールがあるから今回紹介するレポジトリは使う必要ないでしょう、という部分も同じです。今回やろうとしたことは、バージョン指定子の == を1文字に置換してあげたうえでシェルの join コマンドを使ってあげれば同等の用事を満たせると思います。


ソース

https://github.com/hassaku63/two-pip-freeze-comparison

https://github.com/hassaku63/two-pip-freeze-comparison

# usage
usage: compare two pip freeze output [-h] [--output-format {csv,markdown}] [--sort] file1 file2

positional arguments:
  file1
  file2

optional arguments:
  -h, --help            show this help message and exit
  --output-format {csv,markdown}
  --sort                sort alpha

markdown の構文規則ちゃんと調べてなくてエスケープ的な処理を何もやってないです。たぶん文法崩れてるかも...。

とりあえず、これを使って GitHub issue のコメント欄に依存関係の比較をわかりやすいテーブル形式でログっておけるようになりました。やったね。(ただし実用的であるとは言ってない)

Discussion

hassaku63hassaku63

p.s

さらっと探してみた感じ、こちらのパッケージが今回の用事を満たしていそうです。

https://pypi.org/project/compare-requirements/

※中身を精査していないです。CLI の実装をぱっとみしてみて、2022/11/15 時点で悪意あるコードが混じってるようには見えませんでしたが、ご利用は自己責任でどうぞ