1. ホーム
  2. django

[解決済み] ImportError: 'django.utils' から名前 'six' をインポートできません。

2022-02-10 13:51:59

質問

最近、Django フレームワークのバージョンを 2.0.6 から 3.0 を呼び出した後、突然 python manage.py shell コマンドを実行すると、次のような例外が発生しました。

ImportError: cannot import name 'six' from 'django.utils' (/path-to-project/venv/lib/python3.7/site-packages/django/utils/の名前) イニット .py)

フルトレースです。

Traceback (most recent call last):
  File "manage.py", line 13, in <module>
    execute_from_command_line(sys.argv)
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 377, in execute
    django.setup()
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/path-to-project/project/venv/lib/python3.7/site-packages/django/apps/config.py", line 90, in create
    module = import_module(entry)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/path-to-project/project/venv/lib/python3.7/site-packages/corsheaders/__init__.py", line 1, in <module>
    from .checks import check_settings  # noqa: F401
  File "/path-to-project/project/venv/lib/python3.7/site-packages/corsheaders/checks.py", line 7, in <module>
    from django.utils import six

類似の質問

私はこれを読んだ 質問 と、この django-3.0 , リリースノート しかし、これらのリソースは私を助けることができませんでした。

解決方法は?

その Django 3.0.0 リリースノートでは、特定の Python 2 互換性のあるプライベート API が削除されました。 . その中で django.utils.six .

このエラーについて、@WillemVanOnsem は、具体的には、モジュールの corsheaders はこのモジュールを参照していました。

これと同じことに遭遇した他の人は、スタックトレースの最終行にあるファイルパスを見れば、問題のあるモジュールを特定するのに役立つことがあります。私が見たもう一つの例は

...
File "/path/to/project/venv/lib/python3.8/site-packages/parler/utils/conf.py", line 10, in <module>
    from django.utils import six
ImportError: cannot import name 'six' from 'django.utils' (/path/to/project/venv/lib/python3.8/site-packages/django/utils/__init__.py)

この場合、問題を引き起こしているモジュールは parler . この問題に遭遇した他の方のお役に立てれば幸いです。