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はちょっとマイナー?な文字コードのように思えますが、結構よく出てくるやつなんです。引用してみますと
つまり日本語です。
今回は既存の仮想環境で「pip install -r requirements.txt」を実行しようとした時に起きたエラーなので、既存のパッケージにcp932のものがあったようです(詳しいエラーコードは消してしまったので詳細は不明ですが…)。
対処法:新しいプロジェクトは新しい仮想環境で
というわけで対処法ですが、やはり横着はダメ。新しいプロジェクトを開始する際は新しく仮想環境を作成したうえで「requirements.txt」をするのが無難のようです。
anacondaを使っている場合は、
conda create -n 環境名 python
で仮想環境を構築し、
conda activate 環境名
で有効にします。
そのうえで「pip install -r requirements.txt」を実行したところ、スムーズに完了しました。
ちょっとしたことですが、こういったわずかなことが積み重なると大きな時間のロスにつながるもの。同じようなエラーが出た人はぜひご参考にしてみてください。
この記事が気に入ったらサポートをしてみませんか?