コンテンツにスキップ

Top

pipreqs で、必要最小限の requirements.txt を生成する

Python で作ったプログラムを他のPCで動かすときに必要となるモジュールがどれかわからないので、通常であれば、 requirements.txt を準備して配布する。

そしてその requirements.txt を使って、

pip install -r requirements.txt
して、どのPCでもプログラムが動くようにする。

この requirements.txt は一般的には以下のようにして作るのだが、

pip freeze > requirements.txt
実際作ってみるとわかるが開発者の環境がまるごと入るので非常に無駄。

このプログラムにとって必要最小限のモジュールだけ requirements.txt に入れるにはどうしたらよいか調べた。

pipreqs を使う

そのプログラムが必要とするモジュールだけを抜き出す pipreqs というコマンドを使えば、必要最小限の requirements.txt を生成できる。
デフォルトではおそらく入っていないのでインストールする。

pip install pipreqs
そして、Pythonのプログラムのあるディレクトリに移動し、
pipreqs .

INFO: Successfully saved requirements file in .\requirements.txt
とすると、必要最小限の requirements.txt ができている。

WARNING: requirements.txt already exists, use --force to overwrite it

WARNING: requirements.txt already exists, use --force to overwrite it という警告がでることがあるが、読んで字のごとくすでに requirements.txt がいるので失敗している。
強制上書きさせたいなら、 --force をつけろ、ということなのでつける。

pipreqs --force .

UnicodeDecodeError: 'cp932' codec can't decode byte 0x86 in position 74: illegal multibyte sequence

Windows PC で Python の開発をしていて pipreqs を使うと上記のエラーがでることがある。

要は文字コードのアンマッチエラー。

なので、以下のように文字コードを指定してあげればよい。

pipreqs --encoding UTF8 .

以上!