Ошибка импорта: нет модуля с именем django - PullRequest
20 голосов
/ 27 февраля 2012

Я использую Centos Linux.

У меня был python 2.6 с django, и теперь я обновился до python 2.7.
Python 2.6 находится в /usr/lib/python2.6.
Python 2.7 находится в /usr/local/lib/python2.7.
У них обоих есть каталог site-packages, и они оба содержат django 1.2.

Если я запускаю python, я получаю версию 2.7.
Моя проблема в том, что если попытаться импортировать Django, я получаю

ImportError: нет модуля с именем django

Я не уверен, где определен мой PYTHONPATH, и если это то, что мне нужно изменить. кто-нибудь ?

Я закончил тем, что сделал символическую ссылку на директорию 2.6 site-packages.

Ответы [ 5 ]

19 голосов
/ 30 октября 2017

У меня была такая же ошибка, и это исправило мою проблему

python -m pip install django

:) Готово!

15 голосов
/ 27 февраля 2012

Чтобы проверить свой путь, вы можете использовать следующий код:

import sys     
print(sys.path)

Если вы уже знаете, где установлен django, должно быть легко проверить, находится ли нужный каталог в вашем пути с помощью directory in sys.path.

Относительно того, где определен ваш PYTHONPATH, обратите внимание, что это переменная среды, поэтому вы можете проверить ее значение (если оно определено) с помощью: echo $PYTHONPATH

14 голосов
/ 27 февраля 2012

В Linux вы можете установить переменную окружения PYTHONPATH в вашем .profile или .bashrc. Вы можете либо отредактировать его непосредственно из терминала, перейдя в свой домашний каталог (cd ~), а затем отредактировать файл (nano .bashrc), либо открыв файл с помощью gtkedit или vim или чего-либо еще, и добавьте:

PYTHONPATH=/usr/local/lib/python2.7/site-packages:/another/path/etc

Если вы хотите проверить это перед редактированием своего профиля, вы можете экспортировать его из терминала как:

export PYTHONPATH=/local/lib/python2.7/site-packages

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

import sys
sys.path.append('/usr/local/lib/python2.7/site-packages')
11 голосов
/ 30 апреля 2016

1001 * попробовать *

pip freeze

эта команда показывает, какие пакеты установлены в вашей системе затем запустите с привилегией root

pip install django

затем создайте новый проект с помощью команды

django-admin.py startproject mysite

тогда начните свой проект

cd path/to/mysite
./manage.py runserver 

в файле wsgi.py добавить эти строки

import os
import sys
DJANGO_PATH =  os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')
sys.path.append(DJANGO_PATH)
9 голосов
/ 27 февраля 2012

Попробуйте напечатать sys.path, чтобы увидеть, что находится на вашем пути.Джанго должен быть в одном из перечисленных выше.Пример в Windows:

>>> import sys
>>> for p in sys.path: print p

C:\Python27\Lib\idlelib
C:\Windows\system32\python27.zip
C:\Python27\DLLs
C:\Python27\lib
C:\Python27\lib\plat-win
C:\Python27\lib\lib-tk
C:\Python27
C:\Python27\lib\site-packages
>>> 
...