ImportError: cannot import name 'six' from 'django.utils' Ask Question

ImportError: cannot import name 'six' from 'django.utils' Ask Question

Recently, I upgraded the version of Django framework from 2.0.6 to 3.0 and suddenly after calling python manage.py shell command, I got this exception:

ImportError: cannot import name 'six' from 'django.utils' (/path-to-project/project/venv/lib/python3.7/site-packages/django/utils/init.py)

Full trace:

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

Similar Questions:

I read this Question and this , release note , but those resources couldn't help me.

ベストアンサー1

Why this error/exception?

From release notes,

django.utils.six - Remove usage of this vendored library or switch to six.

means, django.utils.six module was removed from 以降

私のコードベースは " django.utils.six" モジュールを使用していませんが、なぜこのエラーが発生するのでしょうか?

このインポートエラーは、次の2つの理由で発生する可能性があります。

  1. 最も重要なこと、インストールされたパッケージのいずれかがdjango.utils.sixモジュールを使用しています
  2. あるいは、コードベースでdjango.utils.sixモジュール

注記:ほとんどの場合、最初の理由は悪役です����

エラー/例外の原因となっているパッケージを特定するにはどうすればよいですか?

簡単な方法は、エラートレースバックの最後の数行を調べてくださいすると、どのパッケージが例外を引き起こしているかがわかります。

コルセア

この例では、corsheadersモジュールがインポートエラーを引き起こしました

  File "/path-to-project/project/venv/lib/python3.7/site-packages/corsheaders/__init__.py", line 1, in 
    from .checks import check_settings  # noqa: F401
  File "/path-to-project/project/venv/lib/python3.7/site-packages/corsheaders/checks.py", line 7, in 
    from django.utils import six

例2

この例では、jsonfieldモジュールがインポートエラーを引き起こしました

  File "d:\production\myproject\venv\lib\site-packages\jsonfield\fields.py", line 21, in 
    from .encoder import JSONEncoder
  File "d:\production\myproject\venv\lib\site-packages\jsonfield\encoder.py", line 2, in 
    from django.utils import six, timezone
ImportError: cannot import name 'six' from 'django.utils' (d:\production\myproject\venv\lib\site-packages\django\utils\__init__.py)

例3

この例ではparlerモジュールがインポートエラーを引き起こしました

...
File "/path/to/project/venv/lib/python3.8/site-packages/parler/utils/conf.py", line 10, in 
    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)

例4

この例ではdjango_mysqlモジュールがインポートエラーを引き起こしました

  File "/home/jerin/.virtualenvs/webscraperio/lib/python3.6/site-packages/django_mysql/checks.py", line 9, in 
    from django_mysql.utils import collapse_spaces
  File "/home/jerin/.virtualenvs/webscraperio/lib/python3.6/site-packages/django_mysql/utils.py", line 17, in 
    from django.utils import six
ImportError: cannot import name 'six'

解決策は何ですか?

サードパーティのパッケージなどが原因でエラーが発生した場合は、django-cors-headersdjango-jsonfieldなど対応するパッケージバージョンを最新バージョンにアップグレードするすでに最新バージョンを使用している場合は、開発者に問題を報告してください。

コードベースが原因でエラーが発生した場合は、パッケージの代わりにdjango.utils.sixモジュール

おすすめ記事