ImportError:无法导入名称锁

Posted

技术标签:

【中文标题】ImportError:无法导入名称锁【英文标题】:ImportError: cannot import name locks 【发布时间】:2016-06-29 17:16:38 【问题描述】:

我正在帮助在 Jupyter 中看到此散景错误的人:

from bokeh.plotting import figure, output_notebook, show

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-fa374f2df119> in <module>()
----> 1 from bokeh.plotting import figure, output_notebook, show

/resources/.virtualenv/python2/lib/python2.7/site-packages/bokeh/plotting/__init__.py in <module>()
      5 from ..models.layouts import Row, Column; Row, Column
      6 
----> 7 from ..io import curdoc; curdoc
      8 from ..io import output_file; output_file
      9 from ..io import output_notebook; output_notebook

/resources/.virtualenv/python2/lib/python2.7/site-packages/bokeh/io.py in <module>()
     27 
     28 # Bokeh imports
---> 29 from .core.state import State
     30 from .document import Document
     31 from .embed import notebook_div, standalone_html_page_for_models, autoload_server

/resources/.virtualenv/python2/lib/python2.7/site-packages/bokeh/core/state.py in <module>()
     44 from ..document import Document
     45 from ..resources import Resources, _SessionCoordinates
---> 46 from ..client import DEFAULT_SESSION_ID
     47 
     48 #-----------------------------------------------------------------------------

/resources/.virtualenv/python2/lib/python2.7/site-packages/bokeh/client/__init__.py in <module>()
      4 from __future__ import absolute_import
      5 
----> 6 from .session import ClientSession, pull_session, push_session, show_session, DEFAULT_SESSION_ID

/resources/.virtualenv/python2/lib/python2.7/site-packages/bokeh/client/session.py in <module>()
      8 log = logging.getLogger(__name__)
      9 
---> 10 from ._connection import ClientConnection
     11 
     12 from bokeh.resources import ( DEFAULT_SERVER_WEBSOCKET_URL,

/resources/.virtualenv/python2/lib/python2.7/site-packages/bokeh/client/_connection.py in <module>()
      9 log = logging.getLogger(__name__)
     10 
---> 11 from tornado import gen, locks
     12 from tornado.httpclient import HTTPRequest
     13 from tornado.ioloop import IOLoop

ImportError: cannot import name locks

奇怪的是,我无法使用相同版本的散景、相同版本的龙卷风等在我自己的 Jupyter 中重现错误。

以下是软件包版本:

bokeh (0.12.0)
tornado (4.3)

什么可能导致这个错误?

【问题讨论】:

【参考方案1】:

tornado.locks 模块是在 Tornado 4.2 中添加的,所以我怀疑,尽管您的朋友认为他们正在运行最新的 Tornado,但实际上他们安装了旧的。

【讨论】:

这就是问题所在。我认为实际上 Tornado 有多个版本——系统上可能是 4.0.2,virtualenv 中可能是 4.3——并且导入了错误的版本。

以上是关于ImportError:无法导入名称锁的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:无法导入名称“_methods”

Django 上的 MakeMigration 错误 - ImportError:无法从“django.db.models”导入名称“FieldDoesNotExist”

无法导入名称 import_by_path

变压器:导入包时出错。 “ImportError:无法从 'torch.optim.lr_scheduler' 导入名称 'SAVE_STATE_WARNING'”

ImportError:无法导入名称发现

ImportError:无法导入名称 VarianceThreshold