はじめに
Djangoのimportエラーで徹夜で対応し、疲れてしまいました。同じ境遇の人が減ることを願って備忘録として残しておきます。元ソース
原因
パッケージのバージョンによってはDjango4に対応していないみたいです。
以下の対応が難しいと感じたら以下の表を見てDjangoのバージョンとpythonのバージョンを決めてください。ソース
対応策
上記のような対応が難しい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はモンキーパッチを覚えた!
最初から動くバージョンでやりたかったデス。