나는 virtualenv : /usr/local/pythonenv/BASELINE
과 /usr/local/pythonenv/django1
으로 두 개의 파이썬 환경을 만들었습니다. 둘 다 --no-site-packages를 사용하여 만들었습니다. easy_install을 사용하여 django1 환경에 django를 설치했습니다.mod_wsgi python이 표준 라이브러리에서 가져올 수 없습니다.
WSGIPythonHome /usr/local/pythonenv/BASELINE
내 django.wsgi 파일과 같이 시작합니다 :
내 wsgi.conf 파일은 파이썬 인터프리터 설정하려면이 라인이 내 사이트를 방문하려고 할 때,
import site
site.addsitedir('/usr/local/pythonenv/django1/lib/python2.7/site-packages')
import os
import sys
하지만를 I 500 오류가 발생하고, 아파치/error_log는 다음이 포함 나는 파이썬 인터프리터가 흐름을 가져올 수 없습니다 이유에 분실하고
[error] Traceback (most recent call last):
[error] File "/service/usr/local/django_apps/apache/django.wsgi", line 1, in ?
[error] import site
[error] ImportError: No module named site
을 n 표준 라이브러리. 나는 심지어 httpd가/usr/local/pythonenv/BASELINE에서 인터프리터를 사용하고 있는지 확인하는 방법조차 잘 모르겠다. 그래서 좋은 시작이 될 것이다.
편집 : 관련이 없지만 나는 여기 또는 ServerFault에 게시해야하는지에 관해서는 상당히 찢어졌습니다. 그 앞면에 대한 조언이 감사합니다.
편집 : http://code.google.com/p/modwsgi/wiki/DebuggingTechniques 덕분에 디버그 정보를 얻을 수있었습니다. 나는
import sys
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
print >> environ['wsgi.errors'], sys.path
print >> environ['wsgi.errors'], sys.prefix
print >> environ['wsgi.errors'], sys.executable
response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
이는/var// 아파치/error_log에 로그에 파이썬 인터프리터 정보를 넣어 포함하도록 내 django.wsgi 스크립트를 변경했습니다. 오류 출력 :
[error] ['/usr/local/pythonenv/BASELINE/lib64/python24.zip', '/usr/local/pythonenv/BASELINE/lib64/python2.4/', '/usr/local/pythonenv/BASELINE/lib64/python2.4/plat-linux2', '/usr/local/pythonenv/BASELINE/lib64/python2.4/lib-tk', '/usr/local/pythonenv/BASELINE/lib64/python2.4/lib-dynload']
[error] /usr/local/pythonenv/BASELINE
[error] /usr/bin/python
그래서 sys.path와 sys.executable은 내 문제를 지적합니다. 어떤 이유로 sys.path는 존재하지 않는 lib 파일을 사용하고 있습니다 (BASELINE은 lib64 디렉토리를 포함하지 않으며 Python2.7로 생성되었습니다). sys.executable은 mod_wsgi가 기본/usr/bin/python 인터프리터가 아니라/usr/local/pythonenv/BASELINE/bin에있는 인터프리터입니다.
왜 이런지는 모르겠지만 적어도 조금은 더 알고 있습니다.
EDIT :이 문제는 해결되었지만 Django는 반드시 "Python 실행 파일 :/usr/bin/python"을 나열해야합니다 (파이썬 버전 : 2.7.2 이후로는 말할 수 있습니다)./usr/local/bin/python을 사용합니다. 이게 정상인가?
네, 이것이 문제였습니다. ./configure --with-python =/usr/local/bin/python을 실행하고 나서 make와 make를했기 때문에 파이썬 2.7에 대해 mod_wsgi를 컴파일했다고 생각했지만, 여전히 오래된 객체를 가지고 있기 때문에 작동하지 않았다. 거기 앉아. 나는 깨끗하게 만들어야 만했다. – sans