【问题标题】:How to fix "NotImplementedError" when trying to run Hydrogen in Atom [duplicate]尝试在 Atom 中运行 Hydrogen 时如何修复“NotImplementedError”[重复]
【发布时间】:2019-07-03 15:22:35
【问题描述】:

我正在尝试在 Atom 上运行 Hydrogen,但在 asyncio python 库中收到一条以“NotImplementedError”结尾的错误消息。

我在 Windows 10 机器上安装了 Python3,并且我使用 jupyter 安装了 ipython 内核。

我收到以下错误消息,我不确定从哪里开始解决问题。

Traceback(最近一次调用最后一次):文件“C:\Users\chels\AppData\Local\Programs\Python\Python38\lib\runpy.py”,第 192 行,在 _run_module_as_main 返回 _run_code(code, main_globals, None , 文件“C:\Users\chels\AppData\Local\Programs\Python\Python38\lib\runpy.py”,第 85 行,在 _run_code exec(code, run_globals) 文件“C:\Users\chels\AppData\Local \Programs\Python\Python38\lib\site-packages\ipykernel_launcher.py”,第 16 行,在 app.launch_new_instance() 文件“C:\Users\chels\AppData\Local\Programs\Python\Python38\lib\site- packages\traitlets\config\application.py”,第 657 行,launch_instance app.initialize(argv) 文件“”,第 2 行,初始化文件“C:\Users\chels\AppData\Local\Programs\Python\Python38\ lib\site-packages\traitlets\config\application.py”,第 87 行,在 catch_config_error 返回方法(app、*args、**kwargs)文件“C:\Users\chels\AppData\Local\Programs\Python\Python38 \lib\site-packages\ipykernel\kernelapp.py”,第 469 行,在初始化 self.init_sockets() 文件“C:\Users\chels\AppData\Lo cal\Programs\Python\Python38\lib\site-packages\ipykernel\kernelapp.py”,第 259 行,在 init_sockets self.init_iopub(context) 文件“C:\Users\chels\AppData\Local\Programs\Python\Python38 \lib\site-packages\ipykernel\kernelapp.py”,第 267 行,在 init_iopub self.iopub_thread = IOPubThread(self.iopub_socket, pipe=True) 文件“C:\Users\chels\AppData\Local\Programs\Python\ Python38\lib\site-packages\ipykernel\iostream.py”,第 68 行,在 init self._setup_pipe_in() 文件“C:\Users\chels\AppData\Local\Programs\Python\Python38\lib\site-packages\ ipykernel\iostream.py”,第 141 行,在 _setup_pipe_in self._pipe_in = ZMQStream(pipe_in, self.io_loop) 文件“C:\Users\chels\AppData\Local\Programs\Python\Python38\lib\site-packages\zmq \eventloop\zmqstream.py”,第 120 行,在 init self._init_io_state() 文件“C:\Users\chels\AppData\Local\Programs\Python\Python38\lib\site-packages\zmq\eventloop\zmqstream.py ",第 541 行,在 _init_io_state self.io_loop.add_handler(self.socket, self._handle_events, self.io_loop.READ) 文件“C: \Users\chels\AppData\Local\Programs\Python\Python38\lib\site-packages\tornado\platform\asyncio.py”,第 79 行,在 add_handler self.asyncio_loop.add_reader(文件“C:\Users\chels\ AppData\Local\Programs\Python\Python38\lib\asyncio\events.py",第 498 行,在 add_reader 中引发 NotImplementedError NotImplementedError

【问题讨论】:

  • 遇到这个问题的任何人:查看this answer - 至少这有助于我使用 Spyder IDE 找到fix my problem - 这似乎有相同的原因。

标签: python atom-editor python-asyncio hydrogen


【解决方案1】:

异常来自 Tornado 调用异步事件循环方法add_reader,Windows 不支持该方法。

Tornado documentation 声明了以下有关平台的信息:

平台: Tornado 应该在任何类 Unix 平台上运行,但为了获得最佳性能和可扩展性,仅建议将 Linux(使用 epoll)和 BSD(使用 kqueue)用于生产部署(虽然 Mac OS X 是从 BSD 衍生出来的,并且支持 kqueue,但它的网络性能普遍较差,所以建议仅用于开发使用)。 Tornado 也将在 Windows 上运行,尽管此配置不受官方支持,仅建议用于开发用途。如果不重新设计 Tornado IOLoop 接口,就无法添加原生 Tornado Windows IOLoop 实现或利用 AsyncIO 或 Twisted 等框架对 Windows 的 IOCP 支持。

最后一句表示 Tornado 的 asyncio 部分还不能在 Windows 上运行。

【讨论】:

  • 好的,你知道我将如何解决/克服这个问题以使 Hydrogen 正常运行吗?它绝对与 Windows 兼容。
【解决方案2】:

您可以回滚到 Python 3.7,也可以编辑 Tornado 以在 3.8 上工作。

找到tornado/platform/asyncio.py文件,添加如下代码:

import sys

if sys.platform == 'win32':
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

来自here

【讨论】:

    【解决方案3】:

    您需要将其添加到 C:\Users\username\AppData\Local\Programs\Python\Python38\Lib\site-packages\tornado\platform

    import asyncio
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())  # python-3.8.0a4

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 2021-07-20
      • 1970-01-01
      • 2021-09-25
      • 2020-02-21
      • 2021-07-05
      • 1970-01-01
      相关资源
      最近更新 更多