Ошибка импорта django - нет модуля с именем core.management - PullRequest
180 голосов
/ 18 мая 2011

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

Я работаю на сервере разработки под управлением 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.

Ответы [ 29 ]

161 голосов
/ 25 мая 2012

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

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

39 голосов
/ 11 июня 2013

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

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

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

workon yourvirtualenvname

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

29 голосов
/ 27 декабря 2013

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

Вместо этого установите его следующим образом:

$ source ./bin/activate
$ pip install Django
14 голосов
/ 18 мая 2011

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

sudo pip install --upgrade django==1.3

(Замените 1.3 на версию django)

10 голосов
/ 19 мая 2011

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

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

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

9 голосов
/ 20 сентября 2012

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

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

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

#!/usr/bin/env python2
7 голосов
/ 02 июня 2016

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

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

 sudo pip install Django

Сделал трюк!

  • на тот случай, если парень, использующий Raspbian / Jessie , получит это
5 голосов
/ 31 марта 2015

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

$ workon env_name
4 голосов
/ 12 августа 2012

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

alias python=python2.7

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

4 голосов
/ 22 января 2014

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

<env path>/bin/python manage.py startapp myapp
...