ImportError:无法导入名称“协程”

时间:2019-07-15 11:06:15

标签: python-3.x python-asyncio importerror coroutine hyperledger-indy

我正在尝试按照以下说明进行操作:

https://github.com/hyperledger/indy-agent/blob/master/python/README.md

为了在Ubuntu 18.04 AWS实例上模拟Hyperledger indy交互。

我已经克隆了存储库并安装了依赖项。(我遵循开发人员模式说明,因为docker失败了

然后我启动命令

python3 indy-agent.py 8094

这是日志,我有:

追踪(最近通话最近一次):

  File "indy-agent.py", line 17, in <module>
    import aiohttp_jinja2

  File "/home/ubuntu/.local/lib/python3.5/site-packages/aiohttp_jinja2/__init__.py", line 6, in <module>
    from aiohttp import web

  File "/home/ubuntu/.local/lib/python3.5/site-packages/aiohttp/__init__.py", line 6, in <module>
    from .client import (

  File "/home/ubuntu/.local/lib/python3.5/site-packages/aiohttp/client.py", line 12, in <module>
    from typing import (  # noqa

ImportError: cannot import name 'Coroutine'

此aiohttp / client.py文件:

"""HTTP Client for asyncio."""

import asyncio
import base64
import hashlib
import json
import os
import sys
import traceback
import warnings
from types import SimpleNamespace, TracebackType
from typing import (  # noqa
    Any,
    Coroutine,
    Generator,
    Generic,
….
)

这是aiohttp / init .py文件:

version = '3.5.4'

from typing import Tuple  # noqa

from . import hdrs
from .client import (

….

这是aiohttp_jinja2 / init .py:

import asyncio
import functools
import warnings
import jinja2
from collections import Mapping
from aiohttp import web
….

关于如何解决它的任何想法? 我应该在其中一个文件中更改一些代码行吗?

谢谢

其他信息(基于答案)

从答案中得到反馈后,我更新到python 3.6.9。 虽然异步问题已修复,但仍然出现问题在/ python目录中设置docker时,我得到了以下信息:

1)make docker-build

2)sudo make docker-start PORT=8094

docker run -it -p $PORT:$PORT -e PORT=$PORT --name indy-agent_$PORT indy-agent
Traceback (most recent call last):
  File "indy-agent.py", line 20, in <module>
    from modules.connection import Connection, AdminConnection
  File "/app/modules/__init__.py", line 1, in <module>
    from python_agent_utils.messages.errors import ValidationException
ModuleNotFoundError: No module named 'python_agent_utils'
Makefile:5: recipe for target 'docker-start' failed
make: [docker-start] Error 1 (ignored)
docker rm indy-agent_$PORT
indy-agent_8094

当我尝试手动安装(没有docker)时,我尝试启动“ pip install -r requirements.txt”,并且得到以下信息:

错误:找不到满足要求aiohttp == 3.5.4的版本……。错误:找不到与aiohttp == 3.5.4匹配的发行版(来自-r requirements.txt(第2行))

然后,当我尝试启动命令“ python3.6 indy-agent.py 8094”时,我会不断收到有关缺少模块的日志。我手动安装了它们,这使我在过程中更进一步。但是随后,我收到了有关无法通过python安装的模块的日志。

这个必须手动安装所有模块的事实对我来说很奇怪,但是我将代理安装在indy-sdk目录之外,也安装在indy-sdk目录中,并且得到相同的结果。 这是我启动的命令和获得的日志:

1)python3.6 indy-agent.py 8094

ModuleNotFoundError:没有名为“ aiohttp_jinja2”的模块

2)python3.6 -m pip install aiohttp_jinja2

3)python3.6 indy-agent.py 8094

ModuleNotFoundError:没有名为“ base58”的模块

4)python3.6 -m pip install base58

没有名为“ dateutil”的模块

5)python3.6 -m pip install python-dateutil

6)python3.6 indy-agent.py 8094

ModuleNotFoundError:没有名为“ indy”的模块

7)sudo apt-get update

8)sudo apt-get install -y libindy

9)python3.6 -m pip install indy

10)python3.6 indy-agent.py 8094

ImportError:无法导入名称“ did”

11)python -m pip install did

12)sudo python3 -m pip install did

当前用户不拥有目录'/home/ubuntu/.cache/pip/http'或其父目录,并且缓存已被禁用。请检查该目录的权限和所有者。如果使用sudo执行pip,则可能需要sudo的-H标志。 目录'/home/ubuntu/.cache/pip'或它的父目录不属于当前用户,并且缓存轮已被禁用。检查该目录的权限和所有者。如果使用sudo执行pip,则可能需要sudo的-H标志。

找不到满足要求的版本(来自版本:) 找不到匹配的分布

0 个答案:

没有答案