Python / Django / WSGI / Apache-“ImportError : 사이트라는 모듈이 없습니다”


8

로컬 우분투 컴퓨터에서 django 응용 프로그램을 사용하려고합니다. 그러나 사이트가 작동하지 않고 다음과 /var/log/apache2/errors.log같은 메시지로 채워집니다.

ImportError: No module named site

/var/log/apache2/error.log(오늘은) 다음과 같습니다.

$ cat error.log | uniq -c
      1 [Wed Jun 29 09:37:37 2011] [notice] Apache/2.2.17 (Ubuntu) mod_wsgi/3.3 Python/2.7.1+ configured -- resuming normal operations
  12966 ImportError: No module named site

그것은 내가 기계를 켰을 때 시작되었다는 no module named site메시지입니다.

날짜 시간 필드가 없다는 점에 유의하십시오. 이러한 오류는 웹 사이트를 방문하지 않아도 (예 : 웹 요청을하지 않는 경우에도) 반복됩니다. 브라우저에서 웹 사이트로 이동하면 큰 다운로드를 기다리는 것처럼 중단됩니다.

설정

아파치 모듈

pip와 함께 설치된 많은 패키지 (django 1.1 포함)가있는 Python 2.5 virtualenv를 사용하고 있습니다. mod_wsgi가로드되었습니다.

$ ls -l /etc/apache2/mods-enabled/wsgi*
lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.conf -> ../mods-available/wsgi.conf
lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.load -> ../mods-available/wsgi.load

"tix"를 localhost로 설정된 도메인 이름으로 사용합니다. /etc/hosts

$ grep tix /etc/hosts
127.0.0.1   tix

아파치 설정

여기 내 아파치 구성이 있습니다 (작동 시키거나 주석 처리 된 줄 등을 시도 할 수 있습니다) .

# mod-wsgi enabled virtual host
WSGISocketPrefix /home/rory/tix/tix_wsgi/tmp
WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/
UnSetEnv PYTHONSTARTUP
SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/
#WSGIPythonEggs /home/rory/svn/tix/tmp/python-eggs

<VirtualHost 127.0.0.1:80>
    ServerName tix

    Alias /media /home/rory/tix/tix/media
    Alias /selenium /home/rory/tix/tix/tests/selenium

    <Directory /home/rory/tix/tix/media>
        SetHandler None
        Order allow,deny
        Allow from all
    </Directory>

    WSGIDaemonProcess tix user=tix_wsgi group=tix_wsgi processes=4 threads=1           python-path=/home/rory/tix/virtualenv2.5/lib/python2.5/site-packages

    WSGIScriptAlias / /home/rory/tix/tix/apache/loader.wsgi
    WSGIProcessGroup tix

    CustomLog /var/log/apache2/tix_access.log combined
    ErrorLog /var/log/apache2/tix_error.log


<Location /server-status>
    SetHandler server-status
    Order Deny,Allow
    Deny from all
</Location>

  <IfModule rewrite_module>
      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^media.tix$ [NC]
      RewriteRule .? http://tix/media%{REQUEST_URI} [R=301,L]
  </IfModule>
</VirtualHost>

wsgi 로더

내 loader.wsgi는 다음과 같습니다.

나는 import site이 파일에 있었는데 문제를 일으킨 것으로 생각되었지만 그것을 제거하면 오류가 계속 발생합니다.

# loader.wsgi - WSGI adapter for tix django project
# The python paste wrapper catches apache 500 errors (Internal Server Errors) and gives debug output
# See http://pythonpaste.org/modules/exceptions.html
import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = 'tix.settings.base'

from paste.exceptions.errormiddleware import ErrorMiddleware

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

application = ErrorMiddleware(tixette, debug=True, error_email='operator@example.com', error_subject_prefix='Alert: wsgi loader python paste: ', error_log='/tix/1.0/logs/paste.log',  show_exceptions_in_wsgi_errors=False)

이 구성은 Ubuntu 10.10에서 잘 작동했지만 Ubuntu 11.04로 업그레이드 한 후 위의 오류가 발생합니다.

답변:


6

mod_wsgi는 Python 2.7 용으로 컴파일되었습니다. 그런 다음 Python 2.5 가상 환경에서 시도 할 수 없습니다.

또한 설정 :

WSGIPythonHome /home/rory/tix/virtualenv2.5/lib/python2.5/

파이썬 2.7 가상 환경이더라도 잘못된 것을 지적하고 있습니다.

설정 :

UnSetEnv PYTHONSTARTUP
SetEnv PYTHONPATH /home/rory/tix/virtualenv2.5/lib/python2.5/

아무 것도하지 않고 당신이 할 수있는 아이디어를 어디서 얻었는지 모릅니다.

가상 환경에 대한 mod_wsgi 문서는 다음에서 찾을 수 있습니다.

https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html

mod_wsgi 및 Python 설치에 더 기본적인 문제가있는 것처럼 보이기 때문에 도움이되지 않습니다. 잠재적으로 문제는 다음과 같은 변형입니다.

https://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html#multiple-python-versions

mod_wsgi를 어디서 구했습니까?

Python 2.7은 어디에 설치되어 있습니까?

어떤 다른 Python 버전을 설치하고 어디에 있습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.