Python 3.8を使用したJupyter Notebook-NotImplementedError


69

最近Python 3.8にアップグレードされ、インストールされましたjupyter。ただし、実行しようとするjupyter notebookと、次のエラーが発生します。

  File "c:\users\user\appdata\local\programs\python\python38\lib\site-packages\tornado\platform\asyncio.py", line 99, in add_handler
    self.asyncio_loop.add_reader(fd, self._handle_events, fd, IOLoop.READ)
  File "c:\users\user\appdata\local\programs\python\python38\lib\asyncio\events.py", line 501, in add_reader
    raise NotImplementedError
NotImplementedError

ProactorEventLoopデフォルトでWindowsに切り替えられたPython 3.8を知っているので、これに関連していると思います。

Jupyterは現在Python 3.8をサポートしていませんか?回避策はありますか?


3
Python 3.8は非常に新しいので、3.7に戻って、より適切にテストされ、3.8用に特別にモジュールが作成されるまでしばらく待つことをお勧めします。
furas


3
3.8.1でもまだ壊れています(本日リリース)。
リックはモニカをサポート

1
これは現在、jupyter Notebookのバージョン6.0.3で修正されています。アップグレードpip install notebook --upgrade
1

回答:


178

編集

この問題は、Jupyter Notebookの古いバージョンに存在し、バージョン6.0.3(2020-01-21にリリース)で修正されました。最新バージョンにアップグレードするには:

pip install notebook --upgrade

GitHubを介してこの問題に続いて、問題はtornadojupyterが使用するサーバーに関連しているようです。

公式の修正を待つことができない人のために、私はファイルを編集してそれを機能させることができましたtornado/platform/asyncio.py

import sys

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

メイン輸入後。

しかし、すぐにこれが公式に修正されることを期待しています。


7
Tornadoチームからの修正を期待しないでください:github.com/tornadoweb/tornado/issues/2608
Andrew

9
あなたがasyncio.pyを探していた場合は、見て取る「C:\のpython3 \ Libの\サイトのパッケージを\竜巻\プラットフォーム」
Behnam Heydari

2
ありがとう!conda envを使用している場合は、グローバルバージョンだけでなく、envのバージョンも必ず変更してください。次に、この変更をimport asyncioステートメントの後に必ず追加してください:)
Omri374 '20

1
これで修正されました。特に:1.次のコマンドを実行すると、スタックトレースからファイルの場所を取得できます:jupyter -m notebook 2.私のシステムでは、ファイルは次の場所にあります:C:\ Users_NAME_ \ AppData \ Roaming \ Python \ Python38 \ site-packages \ tornado \ platform \ asyncio.py
イザヤハインズ

2
これは2020年1月のPython3.8では機能しませんでしたが、以下のMirwise Khanの回答は機能しました
ワーム

32

2019年の回答の改訂

ファイルの最後の部分を変更する C:\Users\{USER-NAME}\AppData\Local\Programs\Python\Python38\Lib\asyncio\__init__.py

から

if sys.platform == 'win32':  # pragma: no cover
    from .windows_events import *
    __all__ += windows_events.__all__
else:
    from .unix_events import *  # pragma: no cover
    __all__ += unix_events.__all__

import asyncio

if sys.platform == 'win32':
    from .windows_events import *
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    __all__ += windows_events.__all__
else:
    from .unix_events import *  # pragma: no cover
    __all__ += unix_events.__all__

1
質問と受け入れられた回答の両方が2019年10月のものであり、解決策は私のために機能しました
Sundeep

2
受け入れられた答えは私にとってはうまくいきませんでした。これはしました。ありがとう!
Abhishek Agarwal

5
これは私には
有効

5
私のためにも働いた、2020
fuomag9

2
Pythonの標準ライブラリのソースコードを変更するつもりはありません
Martijn Pieters
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.