2011-06-20 12 views
6

używam web.py napisać małą stronę helloworld, ale gdy uruchamiam python code.py otrzymuję komunikat o błędzie:Web.py - AttributeError: „moduł” obiekt ma atrybut „aplikacji”

Traceback (most recent call last): File "E:\Python25\webpy\web\mysite.py", line 1, in <module> 
    import web File "E:\Python25\webpy\web\web.py", line 4, in <module> 
    app = web.application(urls, globals()) AttributeError: 'module' object has no attribute 'application' 

Oto moja kod (wklej z samouczków web.py):

import web 

urls = ('/','Index', 
) 

class Index: 
    def GET(self): 
    return "Hello,world!" 

app=web.application(urls,globals()) 

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

PS: Wersja web.py to 0,35.

Odpowiedz

9

Występują kolizje nazw. Nazwałeś swoją sieć pakietową i próbujesz zaimportować sieć modułową.

Zakładam, że jest to pakiet?

\webpy\web\mysite.py

Jeśli tak, kiedy robisz import web importujesz swój pakiet nie rzeczywisty web.py. Zmień nazwę lub zmień kolejność pythonpath.

+0

masz na myśli mój moduł internetowy był w konflikcie z Web.py? Nie mogę znaleźć mojego web.py :( – Xhinking

+0

Czy masz \ _ \ _ init \ _ \ _. Py w webpy \ web \? – Nix

+0

Tak, mam __init__.py w webpy \ web \ – Xhinking

1

To działało w moim przypadku: w app.yaml pliku, wymień

- url: /.* 
    script: test.application 

do tego,

- url: /.* 
    script: test.app 

rozwiązać ten konflikt nazw.

1

Per zalecenie użytkownik powyżej, mam odwrócił mój komentarz w odpowiedzi do poprawy jego widoczności:

Jeśli pierwszy rozpoczął nazywając plik web.py zamiast code.py jak w tutorialu Pythona, to polubisz też mieć "kod bajtowy" web.pyc utworzony w folderze, w którym kodujesz. Po wykryciu kolizji nazw, usuń również plik web.pyc.