我正在尝试仅运行Tornado docs中的Hello World
代码
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
除了我遇到错误:AttributeError: module 'test' has no attribute '__path__'
我只是使用IDLE运行test.py
我认为这是由于Windows 10计算机没有PATH
可以访问Python,但是即使在PATH
中添加了python 3.6,我仍然遇到相同的错误。有什么想法吗?
该屏幕截图是我将python添加到PATH
的方式,我认为我没错。
------ EDIT ------
我将添加一些我遇到的错误/回溯的屏幕截图。第一个是在Windows 10的IDLE 3.6中运行test.py
时的命令提示符。
答案 0 :(得分:0)
解决方案::在不使用-m
参数的情况下运行文件。
另一种解决方案是提供不带.py
扩展名的文件名:
python -m test
这也将起作用。
说明:
-m
参数告诉Python运行Python路径中存在的模块(文件)。它不使用文件名,而是使用模块名。区别在于文件名包含后缀.py
,而模块名不包含后缀。
因此,您也可以像这样运行test.py
文件:python -m test
。
何时使用-m
参数:
这里的-m
参数是为了方便起见。例如,如果要运行python的默认http服务器(python随附),则可以编写以下命令:
python -m http.server
这将为您启动http服务器。 -m
参数给您带来的便利是,您可以从系统中的任何位置编写此命令,而python会自动在系统的http
中查找名为Path
的软件包。
没有-m
参数,如果要运行http服务器,则必须提供完整的路径,例如:
python C:\path\to\python\installation\http\server.py
因此,-m
参数使运行Path
中存在的模块(文件)变得容易。
借助Tornado,您是否会知道如何杀死Python解释器?
CNTRL-C
不执行任何操作。
我使用Linux,Ctrl-C
对我来说很好用。在Windows上,您可以尝试Ctrl-D
或Ctrl-Z
。或以下是一些答案:Stopping python using ctrl+c