尝试在Atom中运行氢气时如何修复“ NotImplementedError”

时间:2019-02-09 16:53:30

标签: python atom-editor python-asyncio hydrogen

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

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

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

跟踪(最近一次通话最近一次):文件“ C:\ Users \ chels \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ runpy.py”,行192,在_run_module_as_main中返回_run_code(代码,main_globals,无,文件“ 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-程序包\ traitlets \ config \ application.py”,在launch_instance app.initialize(argv)中,行657,在初始化文件“ C:\ Users \ chels \ AppData \ Local \ Programs \ Python \ Python38 \中,行2”在catch_config_error返回方法(app,* args,** kwargs)中的lib \ site-packages \ traitlets \ config \ application.py“,第87行,文件“ C:\ Users \ chels \ AppData \ Local \ Programs \ Python \ Python38初始化self.init_sockets()文件“ C:\ Users \ chels \ AppData \ Lo”中的\ lib \ site-packages \ ipykernel \ kernelapp.py”,第469行cal \ Programs \ Python \ Python38 \ lib \ site-packages \ ipykernel \ kernelapp.py”,第259行,位于init_sockets self.init_iopub(上下文)文件“ C:\ Users \ chels \ AppData \ Local \ Programs \ Python \ Python38 init_iopub中的\ lib \ site-packages \ ipykernel \ kernelapp.py“行267 self.iopub_thread = IOPubThread(self.iopub_socket,pipe = True)文件” C:\ Users \ chels \ AppData \ Local \ Programs \ Python \ init self._setup_pipe_in()文件“ C:\ Users \ chels \ AppData \ Local \ Programs \ Python \ Python \ Python38 \ lib \ site-packages \”中的Python38 \ lib \ site-packages \ ipykernel \ iostream.py”,第68行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行,位于初始化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

3 个答案:

答案 0 :(得分:0)

异常来自龙卷风调用了Windows不支持的异步事件循环方法add_reader

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上尚不可用。

答案 1 :(得分:0)

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

找到龙卷风/ platform / asyncio.py文件并添加以下代码:

import sys

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

来自here

答案 2 :(得分:0)

您需要在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