2010-06-24 7 views
1

mod_python을 탐색 중이며 가져 오는 패키지에 문제가 있습니다.mod_python 및 하위 패키지 가져 오기 문제 : ImportError : No module

나는했습니다과 같은 구조 :

my base dir 
    | 
    +- __init__.py 
    +- index.py  
    +- package (directory) 
     | 
     +- __init__.py 
     +- package.py (file) 

및 아파치 가상이 같은 호스트 다음 index.py 파일

<VirtualHost *:80> 

     ServerAdmin root at localhost 
     ServerName myname 
     DocumentRoot /path/to/my base dir 

     <Location /> 
       DirectoryIndex index.html index.py 
       Options Indexes MultiViews FollowSymLinks 
       AddHandler mod_python .py 
       PythonHandler mod_python.publisher 
     </Location> 

</VirtualHost> 

나는 이런 식으로 뭔가를했습니다 :

from package.package import myobject 
.... 
.... 

Apache에서 index.py를로드 할 때 이라는 내부 서버 오류 50030이 발생합니다 :

ImportError: No module named package.package 

내가 뭘 잘못하고 있니?

건배, 이반

답변

3

을 첫째로, 당신은 당신이 의 mod_python을 사용하지한다 파이썬 웹 배포로 시작하는 경우. 이제 공식적으로 죽은 프로젝트이며 더 이상 사용되지 않습니다. 대신 mod_wsgi를 사용하십시오.

코드의 실제 문제는 루트 디렉토리를 파이썬 경로에 두지 않아 mod_python이 루트 디렉토리를 찾을 수 없다는 것입니다. DocumentRoot는 코드가 아닌 정적 문서에 사용됩니다. 실제로 을 기본 디렉토리로 설정하면 안됩니다. 이는 안전하지 않으며 웹을 통해 노출되는 Python 코드의 내용으로 이어질 수 있습니다. 필요. mod_python을 3.3에서

PythonPath "['/path/to/my base dir']" 
+0

감사합니다. 1) mod_wsgi로 전환하고 싶습니다. 나는 어떤 응용 프로그램 프레임 워크없이 간단한 웹 응용 프로그램을했습니다. 초보자를위한 리소스를 제안 해 주시겠습니까? <가상 호스트 * : 80> 내가이 구성 내 문제 해결 제안으로 – eradan

+0

2) \t의 ServerAdmin 루트 @ localhost를 서버 이름 myapp.com PYTHONPATH "의 sys.path + [ '을/경로 /로는/mybasedir']" \t 별칭///대한/경로 mybasedir \t DirectoryIndex에 index.html을 index.py \t AddHandler에 mod_python의 평 PythonHandler의 mod_python.출판사 \t 에 PythonDebug는 지금은 작동하지만이 DocumentRoot의 지시어를 사용에서 그렇게 다르지 않다. – eradan

+0

@eraden : Flask (http://flask.pocoo.org)를 살펴보십시오. 이것은 mod_python.publisher를 사용하는 사람들이 매력적이라는 단순함을 가지고 있습니다. –

0

, mod_python.publisher 파이썬 코드 파일의 구조가 패키지되지 않습니다 :

는 대신, PYTHONPATH 지시어를 사용합니다. 당신은 반드시 숙지

http://www.modpython.org/live/current/doc-html/pyapi-apmeth.html

특히, import_module에 대한 문서() 코드 작품을 가져 오기 어떻게 설명한다.

관련 문제