WSGI -

2011-07-30 5 views
1

설치 따르고 오기 사용자가 만든 클래스 : 아파치 WSGI와 함께 성공적으로WSGI -

class Blog: 

#blogid is a str 
def get_blog(self): 
     conn = sqlite3.connect(self.database) 
     c = conn.cursor() 
     # get the blog 
     c.execute('select * from blogs') 
     results = [] 
     for row in c: 
       results.append(row) 
     c.close() 
     return results 

처럼 보이는 Blog.py의

import sys 

# Path of the directory where scripts directory is located. 
sys.path.insert(0, 'C:\\Users\\xxx\\Documents\\Programming\\www\\scripts') 

from Blog import Blog #Blog.py is a file in the scripts directory 

def application(environ, start_response): 
    status = '200 OK' 
    output = '' 

    b = Blog() 

    for key in environ.keys(): 
     output = output + str(key) + ' : ' + str(environ[key]) + '<br/>' 

    output = "Test: " + b.title + "<br/>" + b.text + "<br/>" + output 
    output = b.get_blog() + "<br/>" + output 

    response_headers = [('Content-type', 'text/html'), 
         ('Content-Length', str(len(output)))] 
    start_response(status, response_headers) 

    return [output] 

관련 부분을 설정하고 노출 된 뼈 응용 프로그램에서 실행 아파치 오류 로그가 나를 준다 :

line 21, in application 
output = b.get_blog() + "<br/>" + output 
AttributeError: Blog instance has no attribute 'get_blog' 

b.get_blog를 str DIR은 (b)) 나 준다 : [ '문서를', '을 초기화하기', '모듈', 'get_data', '문자', '제목'상기 블로그 클래스의 이전 버전 인, 나는 한동안 wsgi 파일에 포함 시켰습니다. 나는 그것이 캐시 된 곳을 찾지 못한다. 또는 블로그 가져 오기에 의해 작성되지 않은 이유를 찾지 못한다. 왜냐하면 내가 가져 오기를 Blog를 가져 오기로 변경하고 Blog.Blog()로 인스턴스화하면 여전히 동일한 디렉토리 내용을 제공하기 때문이다.

답변

0

가져온 모듈에는 '__file__'특성이 있습니다. 그것을 인쇄하면 파일이 모듈에로드 된 위치를 알려줍니다. 그러면 갈등을 해결할 수 있습니다.

아마도 모듈 검색 경로의 다른 버전 일 수도 있고 오래된 .pyc 파일 일 수도 있습니다.

+0

C : \ Users \ xxx \ Documents \ Programming \ www \ scripts \ Blog.py – Bjorn

+0

__file__ = C : \ Users \ xxx \ Documents \ Programming \ www \ scripts \ Blog.py ... 올바른 내용입니다. 통로. pyc 파일을 삭제하려고했으나 마침내 알아 냈습니다. wsgi 파일을 변경하면 Apache를 다시 시작해야합니다 ... 훌륭합니다. 끝내주는 모든 것을 고친다 (나는 많은 시간을 끝냈다 고 생각한 어떤 것) 모든 것을 고쳐 준다. 이제 나는 어리 석다. D – Bjorn