【Python】__init__() got an unexpected keyword argument ‘codec’エラーの解決方法
2021.02.10 /
本記事では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
pdfminerについては以下記事をご参照ください。
【Python】pdfminer.six:PDFからテキストを取得・抽出する
Webアプリケーションを通してPDFをサーバーにアップロードし、views.pyでPDF操作をしたときにpdfminer.converterのTextConverterメソッドで次に示すエラーが発生してしまいました。
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でインストールしたライブラリがエラー原因というのは初めての経験でしたが、無事解決してよかったです。
皆さんも本記事の解決方法を使ってエラー解決してください。