Ошибка после установки Django (предполагаемая ошибка PATH или PYTHONPATH)

Я предполагаю, что это ошибка PATH/PYTHONPATH, но мои попытки заставить django работать пока не увенчались успехом.

Система Ubuntu 10.04, 64-битная:

mx:~/webapps$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04 LTS"

Версия Python: 2.6.5:

@mx:~/webapps$ python -V
Python 2.6.5

Когда я запускаю django-admin.py, происходит следующее:

mx:~/webapps$ django-admin.py
Traceback (most recent call last):
  File "/usr/local/bin/django-admin.py", line 2, in <module>
    from django.core import management
ImportError: No module named django.core

Аналогично, когда я импортирую django в оболочку python:

mx:~/webapps$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named django
>>> quit()

Подробнее:

mx:~/webapps$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

/usr/lib/python2.6/dist-packages

В оболочке Python:

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.path
['', '/usr/lib/python2.6/dist-packages/django', '/usr/local/lib/python2.6/dist-packages/django/bin', '/usr/local/lib/python2.6/dist-packages/django', '/home/petra/webapps', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/pymodules/python2.6']

django-admin.py можно найти здесь:

mx:~/webapps$ locate django-admin.py
~/install/sources/Django-1.2.1/build/lib.linux-i686-2.6/django/bin/django-admin.py
~/install/sources/Django-1.2.1/build/scripts-2.6/django-admin.py
~/install/sources/Django-1.2.1/django/bin/django-admin.py
/usr/local/bin/django-admin.py
/usr/local/lib/python2.6/dist-packages/django/bin/django-admin.py
/usr/local/lib/python2.6/dist-packages/django/bin/django-admin.pyc

и в конце концов это не помогает:

export PYTHONPATH="/usr/lib/python2.6/dist-packages/django:$PYTHONPATH"

ни это:

export PYTHONPATH="/usr/local/lib/python2.6/dist-packages/django:$PYTHONPATH"

Как это решить!?

Спасибо всем заранее! :)


person illuminated    schedule 29.05.2010    source источник


Ответы (2)


Ваш путь к Python кажется облажавшимся.

Если вы хотите импортировать module в Python, то путь к модулю должен быть в sys.path. Например, если вы хотите импортировать модуль, расположенный по адресу

/long/path/to/module

тогда у вас должно быть

/long/path/to

в sys.path, а не /long/path/to/module!

Поскольку вы устанавливаете django, похоже, он установлен в /usr/local/lib/python2.6/dist-packages, то следующее должно решить вашу проблему:

export PYTHONPATH="/usr/local/lib/python2.6/dist-packages:$PYTHONPATH"

Это не объясняет, почему у вас изначально не было этого пути в sys.path...

person Olivier Verdier    schedule 29.05.2010
comment
У меня была опечатка. Я исправил это и добавил объяснения, почему я считаю, что это должно работать. - person Olivier Verdier; 30.05.2010
comment
У меня это работает... /usr/local/lib/python2.7/dist-packages:$PYTHONPATH, спасибо, чувак - person Amitabha Biswas; 03.11.2015

Проведя часы и часы в CLI :), я наконец нашел решение. Причиной, по которой django-admin.py не удалось выполнить, было разрешение на доступ к каталогу /usr/local/lib, фактически отсутствие разрешения владельца на выполнение.

Итак, первое: sudo chmod 711 /usr/local/lib навсегда решает проблему выполнения django-admin.py :)

person illuminated    schedule 30.05.2010