我正在尝试在此处遵循此说明:
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。虽然修复了 asyncio 问题,但我仍然遇到问题在 /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 标志。
找不到满足要求的版本 did (来自版本:)没有为 did 找到匹配的分布