見出し画像

requirements.txtを使う時にUnicodeDecodeErrorが表示された件

requirements.txtとは?

 pythonを使っていると、他のプロジェクトなどに参加する場合などに、その環境とパッケージのバージョンを合わせないといけないことがよくあります。
 そんな時に便利なのがrequirements.txtです。これに必要なパッケージとバージョンをまとめておけば簡単に環境構築ができるわけです。

requirements.txtの作り方

作り方はとても簡単です。この一行を実行するだけです。

pip freeze > requirements.txt

 実行するとテキストファイルが生成されます。テキストなのでメモ帳などのエディタでも編集できます。「パッケージ名==バージョン」で、指定したバージョンのインストールができます。例:torch==1.11.0
(バージョンを指定しない場合は最新版がインストールされます。)

requirements.txtを参照してインストールする場合にエラーが発生

 requirements.txtを参照してパッケージをインストールする場合も簡単です。

pip install -r requirements.txt

 を実行するだけで必要なパッケージファイルをインストールできます。今回のエラーはこの時にでまして、

UnicodeDecodeError: 'cp932' codec can't decode byte 0x97 in ~

 といったエラーが表示されました。

原因は怠慢にあり

 cp932はちょっとマイナー?な文字コードのように思えますが、結構よく出てくるやつなんです。引用してみますと

CP932とは、日本語の文字などを収録した文字コード規格の一つで、Shift JIS規格を元にマイクロソフト(Microsoft)社が独自に拡張したもの。微妙に異なる複数の仕様がある。

IT用語辞典

つまり日本語です。

 今回は既存の仮想環境で「pip install -r requirements.txt」を実行しようとした時に起きたエラーなので、既存のパッケージにcp932のものがあったようです(詳しいエラーコードは消してしまったので詳細は不明ですが…)。

対処法:新しいプロジェクトは新しい仮想環境で

 というわけで対処法ですが、やはり横着はダメ。新しいプロジェクトを開始する際は新しく仮想環境を作成したうえで「requirements.txt」をするのが無難のようです。
 anacondaを使っている場合は、

conda create -n 環境名 python

で仮想環境を構築し、

conda activate 環境名

で有効にします。

 そのうえで「pip install -r requirements.txt」を実行したところ、スムーズに完了しました。
 ちょっとしたことですが、こういったわずかなことが積み重なると大きな時間のロスにつながるもの。同じようなエラーが出た人はぜひご参考にしてみてください。


この記事が気に入ったらサポートをしてみませんか?