ImportError:无法导入名称'错误'

时间:2017-03-25 05:23:22

标签: python-3.x sockjs aiohttp sockjs-tornado

在Tornado中使用sockjs。在服务器上运行时,这是返回的跟踪:

python server.py 
Traceback (most recent call last):
  File "server.py", line 10, in <module>
    from sockjs.tornado import SockJSRouter
  File "/Users/mohit/anaconda/envs/py34/lib/python3.4/site-packages/sockjs/__init__.py", line 20, in <module>
    from sockjs.route import get_manager, add_endpoint
  File "/Users/mohit/anaconda/envs/py34/lib/python3.4/site-packages/sockjs/route.py", line 11, in <module>
    from sockjs.transports import handlers
  File "/Users/mohit/anaconda/envs/py34/lib/python3.4/site-packages/sockjs/transports/__init__.py", line 3, in <module>
    from .jsonp import JSONPolling
  File "/Users/mohit/anaconda/envs/py34/lib/python3.4/site-packages/sockjs/transports/jsonp.py", line 8, in <module>
    from .base import StreamingTransport
  File "/Users/mohit/anaconda/envs/py34/lib/python3.4/site-packages/sockjs/transports/base.py", line 2, in <module>
    from aiohttp import errors
ImportError: cannot import name 'errors'

1 个答案:

答案 0 :(得分:0)

我建议你将python版本升级到 Python 3.5+并使用PEP-492 aka async / await。如果您使用的是Python 3.4,请使用@coroutine替换await from和async def,例如:

async def coro(...): ret = await f()

应替换为:

@asyncio.coroutine def coro(...): ret = yield from f()

来自aiohttp documentaion:

依赖关系 Python 3.4.2 +

chardetmultidictasync_timeoutyarl

您可以选择安装cChardet和aiodns库(强烈建议为了速度)。

$ pip install cchardet

$ pip install aiodns