【Python】__init__() got an unexpected keyword argument ‘codec’エラーの解決方法

/

【Python】__init__() got an unexpected keyword argument ‘codec’エラーの解決方法

本記事ではPython(Django)で__init__() got an unexpected keyword argument ‘codec’エラーの解決方法について解説しています。

Djangoで作成するWebアプリケーション内で本エラーが発生しました。
エラーが発生した箇所はpdfminer.converterのTextConverterメソッドの処理です。

同エラーが発生した方はぜひ本記事で解決方法を確認してください。

エラー発生時の状況

環境

  • OS:Windows10
  • Django:3.1.6
  • pdfminer:20191125

Webアプリケーションの内容

DjangoでWebアプリケーションを作成しており、pdfminerをインストールしていました。

pip install pdfminer

Webアプリケーションを通してPDFをサーバーにアップロードし、views.pyでPDF操作をしたときにpdfminer.converterのTextConverterメソッドで次に示すエラーが発生してしまいました。

codecエラー画面

TextConverterメソッドは次に示すように、views.pyで使用しています。

rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
laparams.detect_vertical = True
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)

エラーより、TextConverter内の引数codecでエラーが発生していると推測できます。

エラー原因と解決方法

エラー原因

いろいろと試した結果、
エラー原因はpipでインストールしたpdfminerでした。

pdfminerのバージョンが20191125と古かったので、もしやと思いアンインストールしてpdfminer.sixをインストールしたらエラーが発生しなくなりました。

エラー解決方法

まずエラー原因であるpdfminerをアンインストールします。

現在インストールしているライブラリを確認したい場合は、次のコマンドを実行します。

pip list

pdfminerをアンインストールするには次のコマンドを実行します。

pip uninstall pdfminer

次にpdfminer.sixをインストールします。pdfminer.sixはPython 3.6以上が必要です。

pip install pdfminer.six

これで__init__() got an unexpected keyword argument ‘codec’エラーを回避できるようになります。

まとめ

本記事「【Python】__init__() got an unexpected keyword argument ‘codec’エラーの解決方法」はいかがでしたか。

pipでインストールしたライブラリがエラー原因というのは初めての経験でしたが、無事解決してよかったです。

皆さんも本記事の解決方法を使ってエラー解決してください。