2012-02-27 5 views
11

Я использую centos linux.Ошибка импорта: нет модуля с именем django

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

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

ImportError: No module named django

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

Я закончил создание символической ссылки на каталог сайтов сайтов 2.6.

ответ

11

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

import sys 
print sys.path 

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

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

+2

directcroty не находится на пути, но родительский указатель - '/usr/local/lib/python2.7/site-packages' находится в пути, как мне добавить каталог в этот путь? – yossi

+0

PYTHONPATH не определен, поэтому где все каталоги, находящиеся в sys.path, определены? – yossi

+1

В этом случае python должен иметь возможность находить django. Вы установили его, возможно, в яйцо? – jcollado

8

Попробуйте распечатать sys.path, чтобы узнать, что у вас на пути. Django должен быть в одном из перечисленных в списке. Пример на 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 
>>> 
+1

Как добавить каталог в этот список? если я использую .append, он не отвечает – yossi

+2

См. http://docs.python.org/tutorial/modules.html#the-module-search-path –

12

Под 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 в апача, вы можете добавить к вашей syspath из файла WSGI как:

import sys 
sys.path.append('/usr/local/lib/python2.7/site-packages') 
+1

Я думаю, что разделитель должен быть «:» вместо «; " –

+0

@YannSagon Спасибо - исправлено выше. Полу-двоеточие было бы для окон, но это было для centos, которое использовало бы двоеточие. –

8

попробовать

pip freeze 

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

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) 
4

я имел ту же ошибку, и это исправить мой вопрос

python -m pip install django

:) Сделано!

+0

Это сработало для меня - обратите внимание на разницу при запуске этого процесса, в отличие от 'pip install django'? –

Смежные вопросы