2012-03-21 2 views
2

나는 일이 스크립트를 얻을 수없는 것 :이 web.py 문서 페이지에서 사용할 코드는수없는

import web 
web.config.debug=False 

urls = (
    '/', 'hello', 
    '/bye/', 'bye') 


app = web.application(urls, globals()) 
session = web.session.Session(app, web.session.DiskStore('sessions'), 
           initializer={'count': 0}) 

class hello: 
    def GET(self): 
     session.count += 1 
     return "You visited " + str(session.count) + " pages." 

class bye: 
    def GET(self): 
     session.kill() 
     return ("Bye, web!") 

if __name__ == "__main__": 
    app.run() 

입니다 : http://webpy.org/cookbook/sessions

http://localhost:1234/으로 이동하여 'hello'페이지에 액세스하려고하면 응용 프로그램에서 내부 서버 오류를 반환합니다.

http://0.0.0.0:1234/ 
Traceback (most recent call last): 
    File "/Library/Python/2.6/site-packages/web/application.py", line 237, in process 
    return self.handle() 
    File "/Library/Python/2.6/site-packages/web/application.py", line 228, in handle 
    return self._delegate(fn, self.fvars, args) 
    File "/Library/Python/2.6/site-packages/web/application.py", line 409, in _delegate 
    return handle_class(cls) 
    File "/Library/Python/2.6/site-packages/web/application.py", line 385, in handle_class 
    return tocall(*args) 
    File "testing.py", line 15, in GET 
    session.count += 1 
    File "/Library/Python/2.6/site-packages/web/session.py", line 69, in __getattr__ 
    return getattr(self._data, name) 
AttributeError: 'ThreadedDict' object has no attribute 'count' 

127.0.0.1:49207 - - [20/Mar/2012 20:34:01] "HTTP/1.1 GET /" - 500 Internal Server Error 

이 그곳에 web.py 전문가는 무슨 일이 일어나고 있는지 말해 줄 수 : 여기

이 리소스에 액세스시 단자의 출력입니까?

+0

코드는 Python 2.7.2 및 web.py 0.36에서와 같이 작동합니다. –

+0

나는 동일한 문제가있다, 누군가는 도울 수 있 었는가? – NeilJiang

+0

이것이 사실 일지 모르지만 diskstore를 사용하는 경우 web.py 코드가있는 폴더에 세션 폴더가 있어야합니다. 쓰기 가능해야합니다. – zbrox

답변

1

Macports 버전의 Python 2.7.2를 설치 및 구성했지만 여전히 비슷한 결과가 나타납니다.

세션이 저장되는 위치 때문에 권한 문제 일 수 있습니다. 나는 애플에서 기본적으로 온 파이썬 2.7 및 파이썬 2.6을 모두 사용하여, 지금 노력하고 있습니다

sudo python myfile.py 1234 

Web.py 세션을 실행 'sudo는'실행했습니다. @Eduardo Ivanec : 지침을 사용하여 Python 개발 환경을 설정하려고합니다. 다시 감사합니다!

1

변경 응용 프로그램 = web.application (URL을, 전역())

에 응용 = web.application (URL을, 지역 주민()) 파이썬 2.7.2와 같이

+0

나는 이것과 같은 결과를 시도했다. 내 파이썬 설치/구성 뭔가가 있다고 생각합니다. – topmulch

0

귀하의 코드가 작동 및 web.py 0.36. 당신이 나이가 들수록 업그레이드한다면, 예제가 유효합니다.

이니셜 라이저가 제대로 작동하지 않는 것 같습니다. 당신은 처음 사용할 때 카운트 속성을 초기화하는 대신에이 조각을 사용해 볼 수 있습니다 :

class hello: 
    def GET(self): 
     try: 
      session.count += 1 
     except AttributeError: 
      session.count = 1 
     return "You visited " + str(session.count) + " pages." 

편집 : 당신이 OS의 X를 사용하고 있기 때문에, this link은 도움이 될 수 있습니다. 표준 OS X 도구와 virtualenv를 사용하여 새로운 Python 환경을 설정하는 방법을 설명합니다. 나는 GNU/Linux를 사용하지만 멋지게 보인다. 또한 official download page에서 바로 사용할 수있는 버전을 다운로드 할 수 있습니다.

+0

나는 이것을 시도했지만 여전히 주사위가 없다. 내 파이썬 설치/구성 문제가 있다고 생각합니다. – topmulch

+0

@topmulch : OS X에서 새로운 Python 환경을 설정하는 것에 대한 제 편집을 참조하십시오. –

+0

멋진 문서. 나는 virtualenv를 설정하지 않았고 나는해야만한다. 고맙습니다. – topmulch

0

이 문제가 발생하기 전에. 내부 오류가 500 번인 경우 chmod -R 755 your_foler/sessions
을 사용하여 폴더 사용 권한을 변경하십시오.

0

문제는 파이썬 버전입니다. 파이썬 2.7 버전을 실행했을 때도 같은 문제가 발생했습니다. 그냥 > python2.7 code.py하고 세션이 완벽하게 작동합니다.