【问题标题】:Python Tornado AttributeError: module 'test' has no attribute '__path__'Python Tornado AttributeError:模块'test'没有属性'__path__'
【发布时间】:2019-05-30 12:40:55
【问题描述】:

我正在尝试从 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,但即使将 python 3.6 添加到 PATH 我仍然遇到相同的错误。有什么想法吗?

截图是我如何将python添加到PATH,我认为我猜对了..

-----编辑-----

我将添加一些我遇到的错误/回溯的屏幕截图。第一个是下面的命令提示符,当test.py 在 Windows 10 的 IDLE 3.6 中运行时。

如果出现导入​​错误,我可以通过 IDLE 解释器很好地导入 Tornado。

我还尝试在 IPython 3.7 中运行此 hello World 代码,但出现此错误:

【问题讨论】:

  • 请发布完整的错误回溯。
  • 你能告诉我如何进行完整的错误追溯吗?
  • 发布您收到的完整错误消息。
  • 我添加了一些截图
  • Ipython 中的奇怪即使重新启动内核并重新运行代码总是弹出相同的错误循环正在运行

标签: python path tornado


【解决方案1】:

解决方案:不带-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 将自动在系统的 Path 中查找名为 http 的包。

如果没有 -m 参数,如果你想运行 http 服务器,你必须给出它的完整路径,例如:

python C:\path\to\python\installation\http\server.py

因此,-m 参数可以轻松运行 Path 中存在的模块(文件)。


使用 Tornado 你会碰巧知道如何杀死 Python 解释器吗? CNTRL-C 什么都不做。

我使用 Linux,Ctrl-C 适合我。在 Windows 上,您可以尝试 Ctrl-DCtrl-Z。或者这里有一些答案:Stopping python using ctrl+c

【讨论】:

    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2018-04-28
    • 2023-04-06
    • 2018-06-16
    • 2015-03-09
    • 2020-10-18
    相关资源
    最近更新 更多