Почему я получаю "ImportError: невозможно импортировать имя find_spec" при запуске нового проекта Django?
Я учу Python в тандеме с Джанго. Первоначально я установил Python 3 на свою машину (Debian Wheezy), но прочитал о возможных конфликтах и удалил его с некоторым трудом.
Сейчас я использую virtualenv и установил python3 в env, а Django - через pip. Кажется, что Django и Python установлены правильно:
# python -c "import django; print(django.get_version())"
1.9.1
# python -V
Python 3.2.3`
но когда я пытаюсь начать новый проект Django, я получаю следующее:
# django-admin.py startproject mysite
Traceback (most recent call last):
File "/home/rialaado/Projects/webenv/bin/django-admin.py", line 2, in <module>
from django.core import management
File "/home/rialaado/Projects/webenv/lib/python3.2/site-packages/django/core/management/__init__.py", line 10, in <module>
from django.apps import apps
File "/home/rialaado/Projects/webenv/lib/python3.2/site-packages/django/apps/__init__.py", line 1, in <module>
from .config import AppConfig
File "/home/rialaado/Projects/webenv/lib/python3.2/site-packages/django/apps/config.py", line 6, in <module>
from django.utils.module_loading import module_has_submodule
File "/home/rialaado/Projects/webenv/lib/python3.2/site-packages/django/utils/module_loading.py", line 67, in <module>
from importlib.util import find_spec as importlib_find
ImportError: cannot import name find_spec
Быстрый Google не нашел результатов, которые помогли бы мне.
Что я должен делать?
3 ответа
find_spec
недоступно в Python 3.2.3; это было добавлено в Python 3.4.
Попробуйте обновить до 3.4 или позже.
Версия Django, которую вы используете (v1.9.1), не может использоваться с Python 3.2. Следовательно, @KarthiG и @MUNGAI NJOROGE верны, и теперь вы знаете, почему.
У меня такая же проблема с докерными контейнерами.
Функция find_spec недоступна при использовании контейнеров Docker и зависимостей django 1.9 и python:3.3. Добавление строки ниже в образ докера в качестве зависимости работает. FROM python:3.4