背景
久しぶりにUbuntu機でjupyter notebookしようとしたらエラーが出た
$ jupyter notebook
Traceback (most recent call last):
File "/usr/local/bin/jupyter-notebook", line 7, in <module>
from notebook.notebookapp import main
File "/usr/local/lib/python3.4/dist-packages/notebook/notebookapp.py", line 44, in <module>
from zmq.eventloop import ioloop
File "/usr/local/lib/python3.4/dist-packages/zmq/eventloop/__init__.py", line 3, in <module>
from zmq.eventloop.ioloop import IOLoop
File "/usr/local/lib/python3.4/dist-packages/zmq/eventloop/ioloop.py", line 78, in <module>
while _IOLoop.configurable_default() is not _IOLoop:
File "/usr/local/lib/python3.4/dist-packages/tornado/ioloop.py", line 350, in configurable_default
from tornado.platform.asyncio import AsyncIOLoop
File "/usr/local/lib/python3.4/dist-packages/tornado/platform/asyncio.py", line 25, in <module>
from tornado.gen import convert_yielded
File "/usr/local/lib/python3.4/dist-packages/tornado/gen.py", line 1295, in <module>
_wrap_awaitable = asyncio.ensure_future
AttributeError: 'module' object has no attribute 'ensure_future'
どうも、'ensure_future'がないとのこと。
調べてみたら、Python3.4.4からasyncioでのensure_futureができたらしい。
自分のPythonが3.4.3なのでエラーでたみたい。
対処法
- Pythonのバージョンをあげる
- エラー箇所をダウングレードする(今回はこっち)
普通ならPython3.6系とかにすればいいと思うのですが、いろいろな理由により、後者で対応しました12。
やったこと
$ pip freeze | grep XXX
これで、現在pipで入っているライブラリのバージョンが見えます。
私は実験用のPCを3台もってて、運良く1台はjupyterが動いていたので、差分を探しては、ひとつずつダウングレードさせていきました。
$ pip uninstall XXX
$ pip install YYY==version
変更部分は、以下の通りです。
notebook==5.2.2
jupyter-client==5.2.1
tornado==4.5.2
これでなんとか動いたので良しとします。(というか最初のエラーがtornadoだったので、tornadoだけでもよいと思います)