Ошибка импорта django - нет модуля с именем core.management

187

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

Я работаю на сервере разработки под управлением Python 2.5 и Django 1.3. Django 1.3 был установлен с помощью python setup.py install после распаковки загрузки tar.gz.

Все работает хорошо, мне редко нужно запускаться, manage.pyно я пытаюсь использовать новое приложение staticfiles и сталкиваюсь с проблемами.

python manage.py collectstatic
Traceback (most recent call last):
  File "manage.py", line 2, in <module>
    from django.core.management import execute_manager
ImportError: No module named core.management

Итак, у меня есть PATHпроблема.

С Django установки я дважды проверьте мой site-packagesкаталог.

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
/usr/lib/python2.5/site-packages

Хорошо, давайте посмотрим, что у меня есть, echo $ PYTHON_PATH был пуст, поэтому я установил его

export PYTHON_PATH=/usr/lib/python2.5/site-packages/django

Все еще не повезло. Давайте посмотрим, что говорит sys.path

>>> import sys
>>> print sys.path
['', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages/PIL', '/usr/lib/python2.5/site-packages/django', '/var/lib/python-support/python2.5']

путь есть, я даже создал /usr/lib/python2.5/site-packages/django.pth с содержимым

cat /usr/lib/python2.5/site-packages/django.pth 
/usr/lib/python2.5/site-packages/django/

Кто-нибудь знает, что здесь происходит?

Я нашел символическую ссылку дальше по пути, который мешал, но нет новой ошибки.

python manage.py collectstatic
Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    execute_manager(settings)
  File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/usr/lib/python2.5/site-packages/django/core/management/__init__.py", line 349, in execute
    version=get_version(),
  File "/usr/lib/python2.5/site-packages/django/__init__.py", line 12, in get_version
    from django.utils.version import get_svn_revision
ImportError: No module named utils.version

Я также попытался создать новый проект, чтобы увидеть, есть ли там какие-либо проблемы и получить ту же ошибку utils.version.

Боковой узел: Unode из #django мне немного помог, настроил virtualenv на той же машине и справился с ошибками, так что все еще не уверен, что происходит с этой фактической установкой здесь, но, похоже, дело не в проектах django, а в django / Python установить.

grantk
источник
1
Что происходит при import djangoвводе в оболочку python?
silent1mezzo
@ silent1mezzo - Ааа, забыл добавить это, никаких жалоб от оболочки python на импорт django
grantk
1
Ты бегал python manage.py syncdb?
silent1mezzo
@silentmezzo - Не на этой машине, сделал это на моей персональной машине перед перемещением проекта.
Грантк
Попробуйте запустить его первым. Иногда это может привести к ошибке.
silent1mezzo

Ответы:

169

Если, как и я, вы запускаете свой django в virtualenv и получаете эту ошибку, посмотрите на свою manage.py. Первая строка должна определять исполняемый файл python, используемый для запуска скрипта. Это должен быть путь к python вашего virtualenv, но это что-то не так, как / usr / bin / python, который не является тем же путем и будет использовать глобальную среду python (и пакеты будут отсутствовать). Просто измените путь на путь к исполняемому файлу python в вашем virtualenv.

Вы также можете заменить свою линию Шебанга на #!/usr/bin/env python. При этом следует использовать правильную среду Python и интерпретатор при условии, что вы сначала активируете свой virtualenv (я полагаю, вы знаете, как это сделать).

Стив К
источник
27
или беги как<path-to-my-env>/bin/python manage.py runserver
geekQ
Хорошо подмечено! Именно это и было проблемой!
kstratis
7
Кроме того ... не забудьте активировать virtualenv. D'о!
Алекс Макп
В любом случае вы можете привести пример пути к вашему исполняемому файлу python в вашем virtualenv. Например, мой путь к моей виртуальной среде: / Users / Chris / virtualenv / my_first_venv, и я сделал первую строку #! / Users / Chris / virtualenv / my_first_venv /, но я все еще получаю ту же ошибку. Я думаю, что я могу делать что-то не так с Шебанг ...
Крис
Возможно, вы забыли добавить исполняемый файл python в конце пути: #!/Users/Chris/virtualenv/my_first_venv/bin/pythonили что-то подобное?
Стив К
40

Если вы находитесь в virtualenv, вам нужно активировать его, прежде чем вы сможете запустить ./manage.py 'command'

source path/to/your/virtualenv/bin/activate

если вы сконфигурируете workon в .bash_profile или .bashrc

workon yourvirtualenvname

* пожалуйста, не редактируйте файл manage.py, возможно, он работает неправильно и может привести к будущим ошибкам

elin3t
источник
Это сделало это и для меня после полудня, изо всех сил пытаясь заставить его работать. Большое спасибо @ elin3t.
Якс
30

У меня была такая же проблема, потому что я устанавливал Django как супер-пользователь, поэтому не в моем virtualenv. Вы не должны делатьsudo pip install Django

Вместо этого установите его так:

$ source ./bin/activate
$ pip install Django
aviggiano
источник
Но без sudo вы получаете: OSError: [Errno 13] В доступе отказано: '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django'
malhal
15

Пожалуйста, переустановите django с помощью pip:

sudo pip install --upgrade django==1.3

(Замените 1.3 на вашу версию Django)

satels
источник
25
Не рекомендуется. Использование sudoдля установки в системные каталоги будет мешать собственным пакетам и, скорее всего, нарушит по крайней мере некоторые части вашей установки Python. Я бы порекомендовал virtualenv.
Нуфал Ибрагим
11

Как известно, это была проблема пути.

база моих пользовательских пакетов разделяла имя с каталогом, установленным в / etc / profile. Пакеты были в другом месте, однако для веб-сервера. Так что я удалил оскорбительные записи из моего $ PYTHONPATH и был в порядке!

Спасибо за помощь.

grantk
источник
10

Другой возможной причиной этой проблемы является то, что ваша ОС по умолчанию работает на python3.

Либо вы должны явно сделать: python2 manage.py

или вам нужно отредактировать шебанг manage.py, например так:

#!/usr/bin/env python2

или если вы используете python3:

#!/usr/bin/env python3
орешки
источник
для меня, я должен был сделать#!/usr/bin/env python2.7
Вик
8

У меня была эта ошибка при попытке запустить встроенную систему (с использованием django конечно) на Raspberry Pi 2не на ВМ )

Запуск этого:

 sudo pip install Django

Сделал трюк!

  • на всякий случай, если парень, использующий Raspbian / Jessie, получит это
d1jhoni1b
источник
6

Вы, вероятно, используете virtualenvwrapper . Не забудьте выбрать свою среду, запустив:

$ workon env_name
MK
источник
4

Для меня мой сервер использовал Python 2.4. Я просто посмотрел Python 2.7, который был установлен на моем сервере, и создал псевдоним.

alias python=python2.7

Если вам нужно знать больше, я нашел решение здесь

el_stack
источник
4

У меня возникла та же проблема, когда я пытался создать новое приложение. Если вы пишете python manage.py startapp myapp, то он ищет usr / bin / python. Но вам нужен этот " python ", который находится в каталоге / bin вашего виртуального пути env . Я решил это, упомянув путь python virtualenv, например, так:

<env path>/bin/python manage.py startapp myapp
Tarique
источник
3

Попробуйте изменить свою первую строку manage.py.

+ Изменить

#!/usr/bin/python

по

#!/usr/bin/env python
Габриэль Кавальканте
источник
3
Обратное мне помогло. Заменено #!/usr/bin/env pythonна#!/usr/bin/python
curlyreggie
env - это обычный unix bin для получения ссылок на bin среды os, в зависимости от конфигурации ОС или установки на python, bin может находиться по другому пути, чем / usr / bin /, и ваше решение не будет работать, также не будет работать, если bin 'env' устанавливается в другом месте.
Габриэль Кавальканте
3
python3 manage.py runserver

Проверьте версию Python

сим
источник
3

Решил это !!!

После поиска возрастов и пробуя все эти другие предложения, которые не работали, я наконец нашел решение для моей установки.

Моя настройка / сценарий:

  • Windows, Python27
  • Мой проект Django проверен через SVN
  • при запуске python manage.py runserver в новой папке я получил ошибку импорта
  • Python manage.py runserver, используемый для работы в исходной папке (из которой я буду фиксировать изменения), пока я не удалил ее

Решение

Удалите все папки с именем django в том же каталоге manage.py

Правильно ... как только я удалил папку "django", которая содержала только файл __init__.py ... Я снова смог запустить сервер!

Понятия не имею, почему, хотя

Дэн
источник
Потому что папка с файлом __init__.py рассматривается как модуль python . Таким образом, вы не должны называть каталог подразумеваемых модулей django
kaushal agrawal
2

Сохраните путь Python Python в переменной и выполните. Это будет включать в себя в противном случае отсутствующие пакеты.

python_path= `which python` 
$python_path manage.py runserver
Нишай Гулати
источник
1

У меня была похожая проблема. PyCharm не смог запустить сервер, но я мог запустить его из командной строки. Я попробовал, какой Python, а затем убедился, что PyCharm был тем же интерпретатором, и тогда все работало нормально.

Трип Дентон
источник
1

Эта ошибка обычно возникает, когда django не установлен. Если вы уже установили django, но все еще получаете ту же ошибку, то вы должны работать в отдельной виртуальной среде. Вам также необходимо установить django в вашей виртуальной среде. Когда вы находитесь в оболочке виртуальной машины, просто сделайте это:

pip install django

Это потому, что виртуальная машина имеет отдельную файловую систему, она не распознает django, даже если она установлена ​​в вашей системе.

Рай Аммад Хан
источник
1

Я исправил эту проблему, изменив #PATH = "$ VIRTUAL_ENV / bin: $ PATH" на PATH = "$ PATH: $ VIRTUAL_ENV / bin". По неясным для меня причинам исполняемый файл python в dir virtualenv не видит django, но обычно установленный питон делает.

Lowlysquib
источник
1

================================== РЕШЕНИЕ =============== ==========================

Первый goto: virtualenv

запустив команду: исходный бин / активировать

и установите django, потому что вы получаете ошибку, связанную с 'import django':

pip install django

Затем запустите:

python manage.py runserver

(Примечание: пожалуйста, измените 'runserver' на имя программы, которую вы хотите запустить)

По той же проблеме, это работало в моем случае. ================================== Синопсис =============== ==========================

ERROR:
(Development) Rakeshs-MacBook-Pro:src rakesh$ python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    import django
ModuleNotFoundError: No module named 'django'

Во время обработки вышеупомянутого исключения произошло другое исключение:

Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    "Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
(Development) Rakeshs-MacBook-Pro:src rakesh$ 
(Development) Rakeshs-MacBook-Pro:src rakesh$ 
(Development) Rakeshs-MacBook-Pro:src rakesh$ python -Wall manage.py test
Traceback (most recent call last):
  File "manage.py", line 8, in <module>
    from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

Во время обработки вышеупомянутого исключения произошло другое исключение:

Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    import django
ModuleNotFoundError: No module named 'django'

Во время обработки вышеупомянутого исключения произошло другое исключение:

Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    "Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

ПОСЛЕ УСТАНОВКИ Django:

(Development) MacBook-Pro:src rakesh$ pip install django
Collecting django
  Downloading https://files.pythonhosted.org/packages/51/1a/e0ac7886c7123a03814178d7517dc822af0fe51a72e1a6bff26153103322/Django-2.1-py3-none-any.whl (7.3MB)
    100% |████████████████████████████████| 7.3MB 1.1MB/s 
Collecting pytz (from django)
  Downloading https://files.pythonhosted.org/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl (510kB)
    100% |████████████████████████████████| 512kB 4.7MB/s 
Installing collected packages: pytz, django

ПОСЛЕ РАЗРЕШЕНИЯ:

(Development) MacBook-Pro:src rakesh$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

August 05, 2018 - 04:39:02
Django version 2.1, using settings 'trydjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[05/Aug/2018 04:39:15] "GET / HTTP/1.1" 200 16348
[05/Aug/2018 04:39:15] "GET /static/admin/css/fonts.css HTTP/1.1" 200 423
[05/Aug/2018 04:39:15] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 200 82564
[05/Aug/2018 04:39:15] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 200 81348
[05/Aug/2018 04:39:15] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 200 80304
Not Found: /favicon.ico
[05/Aug/2018 04:39:16] "GET /favicon.ico HTTP/1.1" 404 1976

Удачи!!

Ракеш Кумар
источник
0

ваш проект создан с использованием старой версии django-admin.py, более старой, чем django1.3

чтобы исправить это, создайте другой проект django, скопируйте его manage.py и вставьте его в старый.

MBarsi
источник
@dontario. Не этот, я создал этот проект, используя мой персональный компьютер под управлением 1.3.0 final. Есть некоторые импортированные проекты, которые были созданы с более старой версией, может ли это быть?
Грантк
Я попытался скопировать мой новый mange.py из нового приложения в старое приложение, которое также используется, и все еще получаю ту же ошибку.
Грантк
0

Полностью согласился, что это проблема пути, но у меня была такая же ошибка. Это было связано с ошибкой использования относительного пути для моего исполняемого файла Python при настройке моей виртуальной среды. Я сделал это:

virtualenv -p ~/python_runtimes/2.7.3/bin/python venv2.7.3 --distribute

Вместо этого мне пришлось указать полный путь к исполняемому файлу Python.

HTH, Харлин

Харлин
источник
0

источник ~ / blog-venv / bin / activ

выберите ваш virtualenv, чтобы заменить "blog-venv" здесь.

windmaomao
источник
Спасибо, что решил мою проблему в отношении этого:File "manage.py", line 8, in <module> from django.core.management import execute_from_ ImportError: No module named django.core.management
Shailen
0

Убедитесь, что вы используете правильный экземпляр Python с правильными каталогами на пути. В моем случае эта ошибка возникла из- pythonза случайного запуска исполняемого файла - я фактически установил Django в python2.7рамках библиотеки и библиотеки. То же самое может произойти и в результате virtualenv.

Крис Джонсон
источник
0

Итак, все идет так:

Вы создали виртуальную среду, и модуль django принадлежит только этой среде. Так как virtualenv изолирует себя от всего остального, поэтому вы видите это.

пройти через это для дальнейшей помощи:

http://www.swegler.com/becky/blog/2011/08/27/python-django-mysql-on-windows-7-part-i-getting-started/

1.Вы можете переключиться в каталог, где хранится ваша виртуальная среда, а затем запустить модуль django.

2.В качестве альтернативы вы можете установить django глобально на ваши пакеты python-> site-package, запустив pip или easy_install.

Команда с использованием pip: pip install django

затем сделайте это:

импорт django print (django.get_version ()) (в зависимости от того, какую версию python вы используете. Это для серии python 3+)

и затем вы можете запустить это: python manage.py runserver и проверить в вашем веб-браузере, набрав: localhost: 8000, и вы должны увидеть страницу с поддержкой django.

Надеюсь это поможет.

Ashish
источник
0

Я включил имя нового приложения в список INSTALLED_APPS в файле settings.py «до того, как» выполнил команду startapp. После того как я удалил запись в списке, я смог создать приложение.

Милад М
источник
0

Я решил эту проблему, используя вместо этого команду «django-admin»:

django-admin startproject _project_name

просто удалите ".py", прикрепленный к "django-admin"

М Хазик
источник
0

Вызов приложения siteможет воспроизвести эту проблему либо.

Кристиан Гутьеррес Сьерра
источник
0

Я получил это из-за того, что забыл, что установил Django, используя его pip -U, поэтому он был доступен только пользователю, запустившему мое приложение Django. Для запуска manage.py мне пришлось сделать

sudo su -s /bin/bash MY_DJANGO_USER
/PATH/TO/MY/APP/manage.py
EM0
источник
-2

все вы, ребята, не упомянули случай, когда кто-то "как я" установит django перед установкой virtualenv ... так что для всех людей моего рода, если вы это сделаете ... переустановите django после активации virtualenv..i надеюсь это поможет

Девер
источник
Это не решение. Это комментарий к другому решению от Стива К.
Шанемгрей
это то, что случилось со мной, и вот как я это исправил ... это ошибка, в которую может упасть любой новичок
Dever