2014-05-20 4 views
0

다음 웹 프로젝트에서 Django를 사용하려고합니다. (생각한대로) 모든 것이 좋게 설치되었지만 최소 (새로운 최소 장고 프로젝트) 사이트를 방문하려고하는데 500 오류가 발생합니다.django에서 가져 오기 오류

내 설정은 apache, mod_wsgi를 사용하며, 개발을 위해 내 Mac을 사용하고 있습니다. 아파치 오류 로그에서 찾고

, 나는 파이썬 mod_wsgi에 사용되는 검사를 두 배로,

ImportError: Could not import settings 'mysite.settings' 
(Is it on sys.path? Is there an import error in the settings file?): 
No module named mysite.settings 

먼저 참조 :

wpa072077:mysite enewe101$ otool -L /usr/local/Cellar/mod_wsgi/3.3/libexec/mod_wsgi.so 
/usr/local/Cellar/mod_wsgi/3.3/libexec/mod_wsgi.so: 
    /Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0) 
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 635.21.0) 

좋아, 그래서 내가 그 파이썬을 해고하고 내 사이트를 가져 오십시오 .settings - 내 PYTHONPATH에 넣기 때문에 문제없이 작동합니다.

흠, 아마도 mod_wsgi가 내 PYTHONPATH을 얻지 못하고 있습니까? 그래서 나는 내 사이트의 Virtual Host 섹션 안에 내 http.conf이 추가보십시오 :

SetEnv PYTHONPATH /Users/enewe101/projects/mysite/src 

합니다 (내 사이트 모듈은 /Users/enewe101/projects/mysite/src/mysite에 있고 예상대로 그것은 __init__.py 포함)

마지막으로 한가지 : 나는 두 가지 버전이 내 컴퓨터에 파이썬의. 앞에서 언급했듯이 컴파일 된 mod_wsgi를 확인하고 REPL을 입력하면 해당 항목을 가져올 수 있습니다 mysite.settings 아무런 문제가 없습니다. 그러나, 사실 mod_wsgi가 다른 파이썬을 사용하기를 바랄뿐입니다 - 그러나 같은 버전 (둘 다 2.7).

WSGIPythonHome /Library/Frameworks/EPD64.framework/Versions/7.3 
WSGIPythonPath /Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages:/Library/Python/2.7/site-packages:/Users/enewe101/projects/mysite/src 

를하지만 단순히 응답하지 않는 서버의 원인 - 나는 참을성이 얻을 때까지 브라우저가 회전 : I httpd.conf에서 넣어 내 원하는 파이썬을 사용 mod_wsgi에 강제보십시오.

이 가져 오기 오류를 해결하고 올바른 python을 사용하도록 mod_wsgi를 얻는 방법은 무엇입니까?

관련 :

+0

http://stackoverflow.com/a/23248187/2428955 어쩌면 wsgi를 참조하십시오.py에는 프로젝트에 대한 명시 적 경로가 필요합니다. – Ambroise

+0

@Ambroise 감사합니다. 물론, 그게 효과가 있지만, 내가 원하는 모든 모듈에 대한 경로를 명시 적으로 추가해야한다는 것을 의미합니다. 이것은 기계 별 설정을 wsgi.py에 추가하는 것으로, 필요하지 않아야합니다. –

답변

1

도구 -L로 검사 할 때 mod_wsgi.so가 잘못된 라이브러리를 찾는 경우 다시하고 소스 코드를 다시 컴파일해야 :

make distclean 
./configure --disable-framework --with-python=/Library/Frameworks/EPD64.framework/Versions/7.3/bin/python 
make 
sudo make install 

키는 ' --disable-framework '. 일부 Python 배포판은 깨져서 라이브러리가 아닌 MacOS X 스타일 프레임 워크로 링크하려고 할 때 제대로 작동하지 않습니다. 이 옵션은 UNIX 스타일 -L/-l 라이브러리 링크를 사용하도록합니다.

WSGIPythonHome 또는 WSGIPythonPath를 설정하지 않았는지 확인하십시오.

SetEnv를 사용하면 프로세스 수준 환경 변수가 설정되지 않으므로 아무 것도하지 않습니다.

변경 사항이 있으면 Django 문서 사이트의 mod_wsgi 명령을 따라 Django를 배포하십시오.

관련 문제