Модуль с именем os не найден Django, mod_wsgi, Apache 2.2

Я пытаюсь настроить apache, mod_wsgi и django. Я получаю внутреннюю ошибку сервера с этим в моем журнале ошибок apache:

[Wed Jun 22 21:31:55 2011] [error] [client ::1] mod_wsgi (pid=2893): Target WSGI script '/django/internal/django-development.wsgi' cannot be loaded as Python module.
[Wed Jun 22 21:31:55 2011] [error] [client ::1] mod_wsgi (pid=2893): Exception occurred processing WSGI script '/django/internal/django-development.wsgi'.
[Wed Jun 22 21:31:55 2011] [error] Traceback (most recent call last):
[Wed Jun 22 21:31:55 2011] [error]   File "/django/internal/django-development.wsgi", line 3, in <module>
[Wed Jun 22 21:31:55 2011] [error]     import sys, os
[Wed Jun 22 21:31:55 2011] [error] ImportError: No module named os
[Wed Jun 22 21:31:55 2011] [error] [client ::1] mod_wsgi (pid=2893): Target WSGI script '/django/internal/django-development.wsgi' cannot be loaded as Python module.
[Wed Jun 22 21:31:55 2011] [error] [client ::1] mod_wsgi (pid=2893): Exception occurred processing WSGI script '/django/internal/django-development.wsgi'.
[Wed Jun 22 21:31:55 2011] [error] Traceback (most recent call last):
[Wed Jun 22 21:31:55 2011] [error]   File "/django/internal/django-development.wsgi", line 3, in <module>
[Wed Jun 22 21:31:55 2011] [error]     import sys, os
[Wed Jun 22 21:31:55 2011] [error] ImportError: No module named os

django-development.wsgi

#! /usr/bin/env python

import sys, os

path = '/django/internal'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'internal.settings'

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

Сообщите мне, есть ли что-нибудь (например, файлы конфигурации), которые я могу опубликовать, чтобы помочь мне диагностировать эту проблему.

изменить:

это странно, учитывая, что я думал, что установил свою версию python по умолчанию на 2.5 .. и запустил ./configure с python2.5 в качестве параметра

$otool -L mod_wsgi.somod_wsgi.so:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.10)
    /System/Library/Frameworks/Python.framework/Versions/2.6/Python (compatibility version 2.6.0, current version 2.6.1)

и

LoadModule wsgi_module libexec/apache2/mod_wsgi.so
WSGIScriptAlias / /django/internal/django-development.wsgi

изменить:

Ах, похоже, импортировался плохой файл конфигурации. Я получил это, чтобы теперь дать мне следующий результат. Прогресс:

[Wed Jun 22 23:04:28 2011] [error] Exception ImportError: 'No module named atexit' in 'garbage collection' ignored
Fatal Python error: unexpected exception during garbage collection
[Wed Jun 22 23:04:28 2011] [error] Exception ImportError: 'No module named atexit' in 'garbage collection' ignored
Fatal Python error: unexpected exception during garbage collection
[Wed Jun 22 23:04:29 2011] [notice] caught SIGTERM, shutting down
[Wed Jun 22 23:04:29 2011] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Wed Jun 22 23:04:29 2011] [warn] mod_wsgi: Compiled for Python/2.5.4.
[Wed Jun 22 23:04:29 2011] [warn] mod_wsgi: Runtime using Python/2.6.1.
[Wed Jun 22 23:04:29 2011] [notice] Digest: generating secret for digest authentication ...
[Wed Jun 22 23:04:29 2011] [notice] Digest: done
[Wed Jun 22 23:04:29 2011] [notice] Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8l DAV/2 mod_wsgi/3.3 Python/2.6.1 configured -- resuming normal operations
[Wed Jun 22 23:06:04 2011] [error] [client ::1] client denied by server configuration: /django/internal/django-development.wsgi

редактировать

Итак, я все еще хотел бы выяснить, как заставить mod_wsgi запускать python 2.5 вместо 2.6 - это то, что вызывает у меня большие проблемы прямо сейчас. Помимо этого, нужно просто настроить конфигурацию apache.


person Brian D    schedule 23.06.2011    source источник
comment
Какая версия питона? Можете ли вы import os использовать обычный интерпретатор Python?   -  person bradley.ayers    schedule 23.06.2011
comment
Версия 2.5 - и да, могу.   -  person Brian D    schedule 23.06.2011
comment
Можете ли вы включить список файлов, находящихся в том же каталоге, что и django-development.wsgi?   -  person bradley.ayers    schedule 23.06.2011
comment
На самом деле это весь мой сайт django - следует ли мне поместить его в отдельный каталог?   -  person Brian D    schedule 23.06.2011
comment
Кажется, что в вашей установке python не установлен модуль os. Это проблема с вашей установкой python. Какую ОС и Python вы используете?   -  person rafalotufo    schedule 23.06.2011
comment
Я не могу сказать, пока не увижу, какие там файлы :)   -  person bradley.ayers    schedule 23.06.2011
comment
ааааааааааааааааааааааааааааааааааааааааааааекаениуба доступной эта тема закрытой. Не думаю, что я смогу ... это что-то проприетарное, над чем я работаю ... не думаю, что большие парни наверху одобрят. Что вы пытаетесь понять? Может, я отвечу за тебя.   -  person Brian D    schedule 23.06.2011
comment
@rafalotufo, если вы посмотрите мой предыдущий комментарий, я могу легко импортировать его в оболочку python. Я использую OS X и готовую установку Python 2.5 от Apple.   -  person Brian D    schedule 23.06.2011
comment
В MacOS X 10.6 установлен Python 2.6, а не 2.5. Какую версию MacOS X вы используете?   -  person Graham Dumpleton    schedule 23.06.2011
comment
Добавьте результат выполнения 'otool -L mod_wsgi.so', а также конфигурацию mod_wsgi, которую вы поместили в Apache. Также убедитесь, что вы отключили mod_python, если вы также загружаете его в Apache.   -  person Graham Dumpleton    schedule 23.06.2011
comment
MacOS X поставляется с Python 2.4, 2.5 и 2.6 - 2.6 по умолчанию, но я (думаю), что я изменил значение по умолчанию на 2.5 - всякий раз, когда я открываю оболочку, это то, что она говорит мне, что она использует. в любом случае, [вывод выше]   -  person Brian D    schedule 23.06.2011
comment
@Brain D, пожалуйста, дайте мне знать, используете ли вы virtualenv или нет.   -  person Prateek    schedule 23.06.2011


Ответы (1)


mod_wsgi по какой-то причине не видит вашу библиотеку Py2.5. Я бы посоветовал проверить значение WSGIPythonPath и убедиться, что он на что-то указывает. например /usr/lib/python2.5

person Thomas    schedule 23.06.2011
comment
Я поместил WSGIPythonPath /System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.5 в httpd.conf, перезапустил apache, но все равно получил тот же результат (и тот же результат, что и раньше, с командой otool). - person Brian D; 23.06.2011
comment
Для ясности: WSGIPythonPath - это не путь к двоичному файлу python, это путь поиска к каталогу модулей python. первым каталогом в списке, разделенном ':', должен быть каталог, в котором есть os.py. перейдите сюда для получения дополнительной информации. - person Thomas; 23.06.2011
comment
Хорошо, спасибо за пояснение - я изменил его, чтобы включить /usr/lib/python2.5 (и я проверил, чтобы убедиться, что это правильно), но по какой-то причине он все еще чувствует необходимость работать с 2.6. - person Brian D; 23.06.2011
comment
Можете ли вы придумать другую причину, по которой мой WSGIPythonPath будет игнорироваться? Может быть, он должен быть выше определенной конфигурации в httpd.conf? - person Brian D; 23.06.2011
comment
не должно быть. попробуйте, чтобы первая строка вашего сценария wsgi была import sys; поднять исключение (sys.path). Это заставит его распечатать путь к вашему модулю python / записать его. тогда вы можете увидеть, загружены ли правильные каталоги. - person Thomas; 24.06.2011