在localhost上运行python应用程序

时间:2012-02-17 02:59:07

标签: python web

我正在尝试从learnpythonthehardway教程中获取一个简单的python脚本,以显示在我的浏览器上,但仍然遇到以下错误:

$ python app.py
http://0.0.0.0:8080/
Traceback (most recent call last):
File "app.py", line 15, in <module>
app.run()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/web/application.py", line 310, in run
return wsgi.runwsgi(self.wsgifunc(*middleware))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/web/wsgi.py", line 54, in runwsgi
return httpserver.runsimple(func, validip(listget(sys.argv, 1, '')))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/web/httpserver.py", line 148, in runsimple
server.start()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/web/wsgiserver/__init__.py", line 1753, in start
raise socket.error(msg)
socket.error: No socket could be created

脚本app.py就是这样:

import web

urls = (
  '/', 'index'
)

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

class index:
    def GET(self):
        greeting = "Hello World"
        return greeting

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

我现在该怎么办?它实际上是在我的浏览器上打印Hello World一次,但我一直在干扰它,现在它给了我错误消息,无论我尝试什么。我不知道这些消息是什么意思或如何修复它们。

2 个答案:

答案 0 :(得分:4)

问题是由于web.py加载的工作方式,只有当这是程序的主要入口点时才需要创建和运行应用程序。

否则,web.py中的类加载器将在稍后再次重新加载此文件,并在其意图只是加载一个类时结束生成新服务器。

试试这个

if __name__ == '__main__' :
  app = web.application(urls, globals())
  app.run()

来源:No socket could be created (other causes)

答案 1 :(得分:0)

更改端口地址可以解决此问题。可能8080可能用于其他东西。 Idk im推测。以下为我解决了这个问题。

尝试

$ python app.py 8081