1
1

More than 1 year has passed since last update.

DjangoでImportError: cannot import name ‘force_text’ from ‘django.utils.encoding’と出たときに試してみてほしいこと

Posted at

はじめに

Djangoのimportエラーで徹夜で対応し、疲れてしまいました。同じ境遇の人が減ることを願って備忘録として残しておきます。元ソース

原因

パッケージのバージョンによってはDjango4に対応していないみたいです。
以下の対応が難しいと感じたら以下の表を見てDjangoのバージョンとpythonのバージョンを決めてください。ソース
スクリーンショット 2022-07-16 1.48.52.png

対応策

上記のような対応が難しいorもう環境を変えるのは面倒だという人は以下を試しましょう。
モンキーパッチ的な方法になりますが、パッケージのソースコードを書き換えます。

例えば以下のようなエラーが出ていたとします。

ImportError: cannot import name 'force_text' from 'django.utils.encoding' (/Users/abemaru/.local/share/virtualenvs/my_graphql_demo-5o5fYzSh/lib/python3.9/site-packages/django/utils/encoding.py)

であれば以下のコマンドを打って

% vi ~/.local/share/virtualenvs/my_graphql_demo-5o5fYzSh/lib/python3.9/site-packages/graphene_django/utils/utils.py

utils.pyのforce_textをimportしているところをforce_strに置き換えて保存してください。

utils.py
# 下のままだと動かないので
# from django.utils.encoding import force_text
# 下に置き換える
django.utils.encoding import force_str 

これで動くはずです。動かない場合はわかりません。ごめんなさい。

さいごに

abemaruはモンキーパッチを覚えた!
最初から動くバージョンでやりたかったデス。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1