Назад | Перейти на главную страницу

Яйца Python не импортируются для Apache2 mod_wsgi

Я настраиваю Apache2 и mod_wsgi для Django в Debian, но обнаружил проблемы. Во-первых, это мои каталоги:

/webapps/lib/python2.6/site-packages # python eggs
/webapps/lib/python2.6/ # python libraries
/webapps/myproject.wsgi # wsgi script
/webapps/myproject/ # django project

А это каталог /webapps/lib/python2.6 (разрешения 777):

.
├── django
│   ├── bin
│   ├── conf
│   ├── ...
│   └── views
└── site-packages
    ├── easy-install.pth
    ├── mongoengine-0.5.3-py2.6.egg
    ├── pymongo-2.1-py2.6-linux-x86_64.egg
    └── site.py

В httpd.conf У меня есть это:

WSGIScriptAlias / /webapps/myproject.wsgi
WSGIPythonEggs /webapps/lib/python2.6/site-packages/

И наконец в myproject.wsgi:

import sys
sys.path.insert(0, '/webapps/lib/python2.6/site-packages')
sys.path.insert(0, '/webapps/lib/python2.6')
sys.path.insert(0, '/webapps/myproject')

.. Nothing important

# I tried 2 lines above as well, but nothing
#import os
#os.environ["PYTHON_EGG_CACHE"] = "/webapps/lib/python2.6/site-packages"

from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()

# This for trying if system reads eggs
try:
    import mongoengine
except Exception as e:
    raise ImportError(str(e) + ". " + str(sys.path))

Когда я перезапускаю Apache и пытаюсь посетить любую веб-страницу, я получаю ошибку 500 и это в журнале:

[Среда, 4 января, 18:18:12 2012] [ошибка] [клиент 217.217.164.22] ImportError: Нет модуля с именем mongoengine. ['/ webapps / myproject', '/webapps/lib/python2.6', '/webapps/lib/python2.6/site-packages', '/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/local/lib/python2.6/dist-packages ',' /usr/lib/python2.6/dist-packages ',' /usr/lib/pymodules/python2.6 ']

Итак, как видите, django хорошо импортирован, но ни одно из яиц не импортируется. Однако другого способа их импортировать я не нашел. Почему яйца не ввозят?

Спасибо.

Я только что нашел решение. Все было идеально, и хотя я перезапускал Apache, он все время выдавал одну и ту же ошибку. Поскольку в Apache работает множество процессов, ключ выполнял killall httpd а затем снова запустить службу. Какой-то кеш или процесс был жив с неправильными данными, поэтому он не работал должным образом.