无法通过 Python 包装器连接到 Hyperledger Indy 测试池 - 错误:找不到 indy.dll

问题描述 投票:0回答:1

我正在尝试使用

indy-sdk
存储库中的 Docker 映像文件创建并连接到本地 Indy 测试分类帐。但是,我的 Python 代码给出了错误:
'_load_cdll: Can't load libindy: Could not find module 'indy.dll' (or one of its dependencies).
我还在下面提供了完整的错误文本。我对 Hyperledger Identity Stack 非常陌生,如果有任何帮助,我将不胜感激。

我按照以下步骤创建并连接到我本地的 Indy 账本。 我从 GitHub 克隆了

indy-sdk
存储库,然后按如下方式运行 docker 映像:

克隆存储库:

C:\Users\Onur\Desktop\indyy>git clone https://github.com/hyperledger-archives/indy-sdk.git

导航到存储库文件夹indy-sdk

C:\Users\Onur\Desktop\indyy>cd indy-sdk

从 docker 文件构建镜像:

C:\Users\Onur\Desktop\indyy\indy-sdk>docker build -f ci/indy-pool.dockerfile -t indy_pool .

输出:

[+] 构建 2.3 秒 (15/15) 完成 => [内部] 加载构建 来自 indy-pool.dockerfile 的定义
0.0s => => 传输 dockerfile: 42B 0.0s => [内部] load .dockerignore 0.0s => => 传输上下文: 2B 0.0s => [内部] 加载 docker.io/library/ubuntu:16.04 2.1 的元数据s => [ 1/11] 来自 docker.io/library/ubuntu:16.04@sha256:1f1a2d56de1d604801a9671f301190704c25d604a416f59e03c04f5c6f 0.0s => 缓存 [2/11] 运行 apt-get update -y && apt-get install -y git wget python3。 5 python3-pip python-setupto 0.0s => 缓存 [ 3/11]运行 pip3 install -U pip==9.0.3 setuptools
0.0s => 缓存 [4/11] 运行 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CE7709D068DB5E88 || apt-key adv
0.0s => 缓存 [ 5/11] RUN echo "deb https://repo.sovrin.org/deb xenial master" >> /etc/apt/sources.list 0.0s => 缓存 [ 6/11] 运行 useradd -ms /bin/bash -u 1000 indy
0.0s => 缓存 [7/11] 运行 apt-get update -y && apt-get install -y python3-pyzmq=18.1.0 indy-plenum=1 0.0s => 缓存 [8/11] RUN echo "[supervisord] 日志文件= /tmp/supervisord.log logfile_maxbytes = 50MB logfile_back 0.0s => 缓存 [ 9/11] RUN awk '{if (index($1, "NETWORK_NAME") != 0) {print("NETWORK_NAME = "sandbox"")} else print 0.0s => 缓存 [10/11] 运行 mv /tmp/indy_config.py /etc/indy/indy_config.py
0.0s => 缓存 [11/11] RUNgenerate_indy_pool_transactions --nodes 4 --clients 5 --nodeNum 1 2 3 4 --ips="127.0.0.1,1 0.0s => 导出到图像
0.1s => => 导出图层 0.0s => => 写入图像 sha256:ffd02987dfcc40a8ff7b8999e3b6453f753ec67f5ab693b9d7437492aa366dbb 0.0s => => 命名为 docker.io/library/indy_pool 0.0s

使用“docker scan”对图像运行 Snyk 测试以查找 漏洞并学习如何修复它们

运行容器:

C:\Users\Onur\Desktop\indyy\indy-sdk>docker run -itd -p 9701-9708:9701-9708 indy_pool
3fc216ca3e59687a87f203ac3f58dd285c7bbd47e0fac1c361e636cd555c1957



C:\Users\Onur\Desktop\indyy\indy-sdk>docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                              NAMES
3fc216ca3e59   indy_pool   "/usr/bin/supervisord"   44 seconds ago   Up 41 seconds   0.0.0.0:9701-9708->9701-9708/tcp   hopeful_boyd

C:\Users\Onur\Desktop\indyy\indy-sdk>docker exec -it 3fc216ca3e59 bash
indy@3fc216ca3e59:/$ cat /var/lib/indy/sandbox/
data/                        node1_info.json              node2_version_info.json      node4_additional_info.json
domain_transactions_genesis  node1_version_info.json      node3_additional_info.json   node4_info.json
keys/                        node2_additional_info.json   node3_info.json              node4_version_info.json
node1_additional_info.json   node2_info.json              node3_version_info.json      pool_transactions_genesis


indy@3fc216ca3e59:/$ cat /var/lib/indy/sandbox/pool_transactions_genesis

{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node1","blskey":"4N8aUNHSgjQVgkpm8nhNEfDf6txHznoYREg9kirmJrkivgL4oSEimFF6nsQ6M41QvhM2Z33nves5vfSn9n1UwNFJBYtWVnHYMATn76vLuL3zU88KyeAYcHfsih3He6UHcXDxcaecHVz6jhCYz1P2UZn2bDVruL5wXpehgBfBaLKm3Ba","blskey_pop":"RahHYiCvoNCtPTrVtP7nMC5eTYrsUA8WjXbdhNc8debh1agE9bGiJxWBXYNFbnJXoXhWFMvyqhqhRoq737YQemH5ik9oL7R4NTTCz2LEZhkgLJzB3QRQqJyBNyv7acbdHrAT8nQ9UkLbaVL9NBpnWXBTw4LEMePaSHEw66RzPNdAX1","client_ip":"127.0.0.1","client_port":9702,"node_ip":"127.0.0.1","node_port":9701,"services":["VALIDATOR"]},"dest":"Gw6pDLhcBcoQesN72qfotTgFa7cbuqZpkX3Xo6pLhPhv"},"metadata":{"from":"Th7MpTaRZVRYnPiabds81Y"},"type":"0"},"txnMetadata":{"seqNo":1,"txnId":"fea82e10e894419fe2bea7d96296a6d46f50f93f9eeda954ec461b2ed2950b62"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node2","blskey":"37rAPpXVoxzKhz7d9gkUe52XuXryuLXoM6P6LbWDB7LSbG62Lsb33sfG7zqS8TK1MXwuCHj1FKNzVpsnafmqLG1vXN88rt38mNFs9TENzm4QHdBzsvCuoBnPH7rpYYDo9DZNJePaDvRvqJKByCabubJz3XXKbEeshzpz4Ma5QYpJqjk","blskey_pop":"Qr658mWZ2YC8JXGXwMDQTzuZCWF7NK9EwxphGmcBvCh6ybUuLxbG65nsX4JvD4SPNtkJ2w9ug1yLTj6fgmuDg41TgECXjLCij3RMsV8CwewBVgVN67wsA45DFWvqvLtu4rjNnE9JbdFTc1Z4WCPA3Xan44K1HoHAq9EVeaRYs8zoF5","client_ip":"127.0.0.1","client_port":9704,"node_ip":"127.0.0.1","node_port":9703,"services":["VALIDATOR"]},"dest":"8ECVSk179mjsjKRLWiQtssMLgp6EPhWXtaYyStWPSGAb"},"metadata":{"from":"EbP4aYNeTHL6q385GuVpRV"},"type":"0"},"txnMetadata":{"seqNo":2,"txnId":"1ac8aece2a18ced660fef8694b61aac3af08ba875ce3026a160acbc3a3af35fc"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node3","blskey":"3WFpdbg7C5cnLYZwFZevJqhubkFALBfCBBok15GdrKMUhUjGsk3jV6QKj6MZgEubF7oqCafxNdkm7eswgA4sdKTRc82tLGzZBd6vNqU8dupzup6uYUf32KTHTPQbuUM8Yk4QFXjEf2Usu2TJcNkdgpyeUSX42u5LqdDDpNSWUK5deC5","blskey_pop":"QwDeb2CkNSx6r8QC8vGQK3GRv7Yndn84TGNijX8YXHPiagXajyfTjoR87rXUu4G4QLk2cF8NNyqWiYMus1623dELWwx57rLCFqGh7N4ZRbGDRP4fnVcaKg1BcUxQ866Ven4gw8y4N56S5HzxXNBZtLYmhGHvDtk6PFkFwCvxYrNYjh","client_ip":"127.0.0.1","client_port":9706,"node_ip":"127.0.0.1","node_port":9705,"services":["VALIDATOR"]},"dest":"DKVxG2fXXTU8yT5N7hGEbXB3dfdAnYv1JczDUHpmDxya"},"metadata":{"from":"4cU41vWW82ArfxJxHkzXPG"},"type":"0"},"txnMetadata":{"seqNo":3,"txnId":"7e9f355dffa78ed24668f0e0e369fd8c224076571c51e2ea8be5f26479edebe4"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node4","blskey":"2zN3bHM1m4rLz54MJHYSwvqzPchYp8jkHswveCLAEJVcX6Mm1wHQD1SkPYMzUDTZvWvhuE6VNAkK3KxVeEmsanSmvjVkReDeBEMxeDaayjcZjFGPydyey1qxBHmTvAnBKoPydvuTAqx5f7YNNRAdeLmUi99gERUU7TD8KfAa6MpQ9bw","blskey_pop":"RPLagxaR5xdimFzwmzYnz4ZhWtYQEj8iR5ZU53T2gitPCyCHQneUn2Huc4oeLd2B2HzkGnjAff4hWTJT6C7qHYB1Mv2wU5iHHGFWkhnTX9WsEAbunJCV2qcaXScKj4tTfvdDKfLiVuU2av6hbsMztirRze7LvYBkRHV3tGwyCptsrP","client_ip":"127.0.0.1","client_port":9708,"node_ip":"127.0.0.1","node_port":9707,"services":["VALIDATOR"]},"dest":"4PS3EDQ3dW1tci1Bp6543CfuuebjFrg36kLAUcskGfaA"},"metadata":{"from":"TWwCRQRZ2ZHMJFn9TzLp7W"},"type":"0"},"txnMetadata":{"seqNo":4,"txnId":"aa5e817d7cc626170eca175822029339a444eb0ee8f0bd20d3b0b76e566fb008"},"ver":"1"}
indy@3fc216ca3e59:/$

然后,我复制了创世内容并将其粘贴到 VSCode 中的

pool1.txn
文件中。这是
pool1.txn
文件的内容:

{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node1","blskey":"4N8aUNHSgjQVgkpm8nhNEfDf6txHznoYREg9kirmJrkivgL4oSEimFF6nsQ6M41QvhM2Z33nves5vfSn9n1UwNFJBYtWVnHYMATn76vLuL3zU88KyeAYcHfsih3He6UHcXDxcaecHVz6jhCYz1P2UZn2bDVruL5wXpehgBfBaLKm3Ba","blskey_pop":"RahHYiCvoNCtPTrVtP7nMC5eTYrsUA8WjXbdhNc8debh1agE9bGiJxWBXYNFbnJXoXhWFMvyqhqhRoq737YQemH5ik9oL7R4NTTCz2LEZhkgLJzB3QRQqJyBNyv7acbdHrAT8nQ9UkLbaVL9NBpnWXBTw4LEMePaSHEw66RzPNdAX1","client_ip":"127.0.0.1","client_port":9702,"node_ip":"127.0.0.1","node_port":9701,"services":["VALIDATOR"]},"dest":"Gw6pDLhcBcoQesN72qfotTgFa7cbuqZpkX3Xo6pLhPhv"},"metadata":{"from":"Th7MpTaRZVRYnPiabds81Y"},"type":"0"},"txnMetadata":{"seqNo":1,"txnId":"fea82e10e894419fe2bea7d96296a6d46f50f93f9eeda954ec461b2ed2950b62"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node2","blskey":"37rAPpXVoxzKhz7d9gkUe52XuXryuLXoM6P6LbWDB7LSbG62Lsb33sfG7zqS8TK1MXwuCHj1FKNzVpsnafmqLG1vXN88rt38mNFs9TENzm4QHdBzsvCuoBnPH7rpYYDo9DZNJePaDvRvqJKByCabubJz3XXKbEeshzpz4Ma5QYpJqjk","blskey_pop":"Qr658mWZ2YC8JXGXwMDQTzuZCWF7NK9EwxphGmcBvCh6ybUuLxbG65nsX4JvD4SPNtkJ2w9ug1yLTj6fgmuDg41TgECXjLCij3RMsV8CwewBVgVN67wsA45DFWvqvLtu4rjNnE9JbdFTc1Z4WCPA3Xan44K1HoHAq9EVeaRYs8zoF5","client_ip":"127.0.0.1","client_port":9704,"node_ip":"127.0.0.1","node_port":9703,"services":["VALIDATOR"]},"dest":"8ECVSk179mjsjKRLWiQtssMLgp6EPhWXtaYyStWPSGAb"},"metadata":{"from":"EbP4aYNeTHL6q385GuVpRV"},"type":"0"},"txnMetadata":{"seqNo":2,"txnId":"1ac8aece2a18ced660fef8694b61aac3af08ba875ce3026a160acbc3a3af35fc"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node3","blskey":"3WFpdbg7C5cnLYZwFZevJqhubkFALBfCBBok15GdrKMUhUjGsk3jV6QKj6MZgEubF7oqCafxNdkm7eswgA4sdKTRc82tLGzZBd6vNqU8dupzup6uYUf32KTHTPQbuUM8Yk4QFXjEf2Usu2TJcNkdgpyeUSX42u5LqdDDpNSWUK5deC5","blskey_pop":"QwDeb2CkNSx6r8QC8vGQK3GRv7Yndn84TGNijX8YXHPiagXajyfTjoR87rXUu4G4QLk2cF8NNyqWiYMus1623dELWwx57rLCFqGh7N4ZRbGDRP4fnVcaKg1BcUxQ866Ven4gw8y4N56S5HzxXNBZtLYmhGHvDtk6PFkFwCvxYrNYjh","client_ip":"127.0.0.1","client_port":9706,"node_ip":"127.0.0.1","node_port":9705,"services":["VALIDATOR"]},"dest":"DKVxG2fXXTU8yT5N7hGEbXB3dfdAnYv1JczDUHpmDxya"},"metadata":{"from":"4cU41vWW82ArfxJxHkzXPG"},"type":"0"},"txnMetadata":{"seqNo":3,"txnId":"7e9f355dffa78ed24668f0e0e369fd8c224076571c51e2ea8be5f26479edebe4"},"ver":"1"}
{"reqSignature":{},"txn":{"data":{"data":{"alias":"Node4","blskey":"2zN3bHM1m4rLz54MJHYSwvqzPchYp8jkHswveCLAEJVcX6Mm1wHQD1SkPYMzUDTZvWvhuE6VNAkK3KxVeEmsanSmvjVkReDeBEMxeDaayjcZjFGPydyey1qxBHmTvAnBKoPydvuTAqx5f7YNNRAdeLmUi99gERUU7TD8KfAa6MpQ9bw","blskey_pop":"RPLagxaR5xdimFzwmzYnz4ZhWtYQEj8iR5ZU53T2gitPCyCHQneUn2Huc4oeLd2B2HzkGnjAff4hWTJT6C7qHYB1Mv2wU5iHHGFWkhnTX9WsEAbunJCV2qcaXScKj4tTfvdDKfLiVuU2av6hbsMztirRze7LvYBkRHV3tGwyCptsrP","client_ip":"127.0.0.1","client_port":9708,"node_ip":"127.0.0.1","node_port":9707,"services":["VALIDATOR"]},"dest":"4PS3EDQ3dW1tci1Bp6543CfuuebjFrg36kLAUcskGfaA"},"metadata":{"from":"TWwCRQRZ2ZHMJFn9TzLp7W"},"type":"0"},"txnMetadata":{"seqNo":4,"txnId":"aa5e817d7cc626170eca175822029339a444eb0ee8f0bd20d3b0b76e566fb008"},"ver":"1"}

我的

main.py
文件也位于与
pool1.txn
相同的文件夹中。 当我运行
main.py
连接到本地 indy 账本时,出现错误
Could not find module 'indy.dll' (or one of its dependencies)

main.py文件:

import asyncio
import json

from indy import pool
from indy.error import ErrorCode, IndyError

async def run():
    print("Indy demo program")

    print("STEP1 - Connect to Pool")
    pool_ = {
        "name": "pool1"
    }

    print("Open Pool Ledger: {}".format(pool_['name']))
    pool_['genesis_txn_path'] = "pool1.txn"
    pool_['config'] = json.dumps({"genesis_txn": str(pool_['genesis_txn_path'])})

    print(pool_)

    #connecting to pool
    await pool.set_protocol_version(2)

    try:
        await pool.create_pool_ledger_config(pool_['name'], pool_['config'])
    except IndyError as ex:
        if ex.error_code == ErrorCode.PoolLedgerConfigAlreadyExistsError:
            pass
        pool_['handle'] = await pool.open_pool_ledger(pool_['name'], None)

        print(pool_['handle'])

#loop = asyncio.get_event_loop()
#loop.run_until_complete(run())
asyncio.run(run())

我得到的错误:

PS C:\Users\Onur\Desktop\indynptel> python main.py 
Indy demo program STEP1 - Connect to Pool Open Pool Ledger: pool1 {'name': 'pool1', 'genesis_txn_path': 'pool1.txn', 'config': '{"genesis_txn": "pool1.txn"}'}
    _load_cdll: Can't load libindy: Could not find module 'indy.dll' (or one of its dependencies). Try using the full path with constructor syntax. Traceback (most recent call last):   File "C:\Users\Onur\Desktop\indynptel\main.py", line 35, in <module>
        asyncio.run(run())   File "C:\Users\Onur\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run
        return loop.run_until_complete(main)   File "C:\Users\Onur\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 641, in run_until_complete
        return future.result()   File "C:\Users\Onur\Desktop\indynptel\main.py", line 22, in run
        await pool.set_protocol_version(2)   File "C:\Users\Onur\AppData\Local\Programs\Python\Python310\lib\site-packages\indy\pool.py", line 212, in set_protocol_version
        res = await do_call('indy_set_protocol_version',   File "C:\Users\Onur\AppData\Local\Programs\Python\Python310\lib\site-packages\indy\libindy.py", line 30, in do_call
        err = getattr(_cdll(), name)(command_handle,   File "C:\Users\Onur\AppData\Local\Programs\Python\Python310\lib\site-packages\indy\libindy.py", line 133, in _cdll
        _cdll.cdll = _load_cdll()   File "C:\Users\Onur\AppData\Local\Programs\Python\Python310\lib\site-packages\indy\libindy.py", line 165, in _load_cdll
        raise e   File "C:\Users\Onur\AppData\Local\Programs\Python\Python310\lib\site-packages\indy\libindy.py", line 160, in _load_cdll
        res = CDLL(libindy_name)   File "C:\Users\Onur\AppData\Local\Programs\Python\Python310\lib\ctypes\__init__.py", line 374, in __init__
        self._handle = _dlopen(self._name, mode) FileNotFoundError: Could not find module 'indy.dll' (or one of its dependencies). Try using the full path with constructor syntax. PS C:\Users\Onur\Desktop\indynptel>

我安装了以下 pip 软件包:

python3-indy           1.16.0.post286
indy                   0.1
indy-sdk               0.0.1.post152
sdk hyperledger hyperledger-indy decentralized-identity hyperledger-aries
1个回答
0
投票

在 ubuntu 系统上您可以下载 https://repo.sovrin.org/lib/apt/xenial/;

然后运行此命令

export LD_LIBRARY_PATH=/path/to/sharedObjectLibrariesFolder

然后就可以了。

在 Windows 上,您需要下载 https://repo.sovrin.org/windows/libindy/

解压它,然后将这些文件放入 windows/system32 中

© www.soinside.com 2019 - 2024. All rights reserved.