0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pipreqsとpipreqsnbでスリムなrequirements.txt書き出し

Last updated at Posted at 2024-10-08

内容

はじめまして。私は普段メーカーで機械学習の業務に携わっております。
仕事中、他の同僚とPythonの開発環境を揃える必要があるときは少なからずあります。
とはいえガチガチのエンジニアというわけでもない(いわゆる手を動かす研究開発も並行して行っています)ような企業研究者だと、Dockerのようなコンテナ型の仮想環境を使って……という手段も取りにくかったりします。
例えば、相手がDockerを知らない、それどころかPythonを触ったばかり、利用コストが申請しづらい(これが一番多い)等々。
そういうときに活躍するのが皆様ご存知のrequirements.txtですが、pip freezeで作って中身を見てみると、まあごちゃっとしていて、仮想環境に入れたパッケージが全部含まれている。.pyファイルや.ipynbファイルの必要最小限なパッケージを把握したいだけなのに。
こういうときに、スリムなrequirements.txtを出力できるpipreqsとpipreqsnbが役に立ちます。前置きが長くなりすぎました。

実行環境および前提条件

・Windows11
・Python3
・上記のように開発環境を揃える際にDockerを使うのが難しい人
・.pyだけでなく.ipynbもよく使う

使用ライブラリ

・pipreqs

・pipreqsnb

使用方法

インストール

Winキーのあとcmdと入力してコマンドプロンプトを呼び出し、下記の通りコマンドを実行する

pip install pipreqs
pip install pipreqsnb

書き出し

あらかじめcd {プロジェクトが保存されたディレクトリパス}で移動してから実行

pipreqs

もしくは下記のように実行すると移動しなくてもOK

pipreqs {プロジェクトが保存されたディレクトリパス}

いずれも選択したディレクトリ下にrequirements.txtが作られる。

pipreqsは.pyファイルのみが対象のため、.ipynbファイルのときはpipreqsnbを使う。
(pipreqsnbのリファレンスだと.pyもできそうだったが、試したら上手くできなかった)

(対象が.ipynbの場合)
pipreqsnb {プロジェクトが保存されたディレクトリパス}

オプション

pipreqsnbはpipreqsのラッパーなので、ほぼ同じオプションが使える。
共通で使えるものを下記に示す。

Option
--use-local PyPIを使わずローカルパッケージ情報のみを使用する
--pypi-server {url} カスタムPyPIサーバーを使用する
--proxy {url} プロキシを使用する
--debug デバッグ情報を出力する
--ignore {dirs}... カンマで区切られた余分なディレクトリを無視する
--encoding {charset} ファイルを開くときのエンコーディングを指定する
--savepath {file} 指定されたファイルに要件リストを保存する
--print 標準出力に要件のリストを出力する
--force 保存先にrequirements.txtがあっても上書きする
--diff {file} requirements.txt内のパッケージとプロジェクトのインポートを比較する
--clean {file} requirements.txtからプロジェクトにインポートされていないパッケージを削除する

ちなみに、エンコーディングを指定していないとUnicodeDecodeErrorを吐くことが非常に多いので、下記のように使うことが多い(むしろ私の環境だと今のところ100%そう)。

pipreqsnb --encoding UTF8 {プロジェクトが保存されたディレクトリパス}

終わりに

.ipynbはpipreqsで捕捉できない!と嘆いていたところにpipreqsnbを見つけたので記事を書いてみました。
また、記事を書く際は公式リファレンス以外に下記リンクを参考にさせていただきました。
ありがとうございます。
最小限なrequirements.txtの作成方法
pipreqsがUnicodeDecodeErrorになるときの対処法

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?