Ошибка импорта не может импортировать имя execute_manager в среде Windows

Я разгоню тебя до скорости. Я пытаюсь настроить среду разработки Windows. Я успешно установил python, django и virtualenv + virtualenwrapper( установщик windows-cmd)

workon env
Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1,6,1, 'final',0)
>>> quit()

Но когда я бегу: python manage.py runserver из моего клонированного репозитория я получаю эту ошибку:

Traceback (most recent call last)"
File "manage.py", line 2, in (module)
from django.core.management import execute_manager
ImportError: cannot import name execute_manager

И python, и django добавлены в мою системную переменную PATH:

...C:\Python27\;C:\Python27\Scripts\;C:\PYTHON27\DLLs\;C:\PYTHON27\LIB\;C:\Python27\Lib\site-packages\; 

Я также пробовал это с bash и powershell, и я все еще получаю ту же ошибку.

Это вопрос, связанный с virtualenv? Вопрос зависимости от Джанго? Хлоп. Как мне исправить эту проблему? Помоги мне Stackru-kenobi, твоя единственная надежда.

3 ответа

Решение

execute_manager устарел в Django 1.4 как часть рефакторинга макета проекта и был удален в 1.6 за временную шкалу устаревания: https://docs.djangoproject.com/en/1.4/internals/deprecation/

Чтобы исправить эту ошибку, вы должны либо установить совместимую версию Django для проекта, либо обновить manage.py новому стилю, который не использует execute_manager: https://docs.djangoproject.com/en/stable/releases/1.4/ Скорее всего, если ваш manage.py не совместим с 1.6, тогда как и остальная часть проекта. Вы должны найти подходящую версию Django для проекта.

@ Марк Лавин хорошо объяснил, что означает ошибка и как она возникает. Я думаю, что я только что обнаружил, почему другие могут также получить это сообщение об ошибке, оставляя его здесь для записи.

Я предполагаю, что вы запускаете это из виртуальной среды.

При запуске нового проекта Django, если вы запустите django-admin startproject <myproject>Вы вызываете глобальную установку Django. Если, как в моем случае, это происходит из устаревшего репо, это может быть старая версия - в моем случае:

>> django-admin --version
>> 1.3.1

Если вы хотите запустить Django из виртуальной среды, вам нужно вызвать его с django-admin.py startproject <myproject>, Таким образом, вы получаете проект Django с версией, соответствующей вашей локальной установке:

>> django-admin.py --version
>> 1.6.6

Я получаю эту ошибку, потому что у меня была старая версия django-admin.py в моем /usr/local/bin папку, и я забыл создать новый virtualenv для моего нового проекта.

Помните, что шаги для нового проекта должны быть:

  1. Сначала создайте новый virtualenv для вашего нового проекта:
    mkvirtualenv <mynewproj>
  2. Обновите версию Python для вашего virtualenv, если необходимо:
    virtualenv --python $(which python3.6) ~/.virtualenvs/<mynewproj>
  3. Затем создайте структуру папок вашего проекта Django:
    django-admin startproject <django project name>

Я также удалил мою старую устаревшую /usr/local/bin/django-admin.py потому что он был создан до того, как я обнаружил радости virtualenv,

Другие вопросы по тегам