Грешка след инсталиране на 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 shell:

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