【问题标题】:DeprecationWarning: in python3弃用警告:在 python3 中
【发布时间】:2018-07-30 08:39:19
【问题描述】:

在 python3.6 中导入 web3 库时

from web3.auto import w3

我收到一大堆警告,例如:

.local/lib/python3.6/site-packages/eth_utils/string.py:23:
DeprecationWarning:force_bytes 函数已被弃用,并将在 eth-utils 的后续版本中删除图书馆。 UTF8 无法对 0-255 范围内的某些字节值进行编码,这使得如果没有明确声明的编码,就不可能在字节和文本表示之间进行天真的强制转换。
“声明的编码。”.format(fn.__name__)

还有更多这样的。 我该如何解决这个问题?

【问题讨论】:

标签: python python-3.x web3


【解决方案1】:

web3.auto 不再包含在 web3 库中,它已从新的稳定库中删除,因此在最新稳定版本的 web3 库中,您必须手动提供提供程序。 提供者是 web3 连接到区块链的方式。 Web3 库附带以下内置提供程序,应该适用于大多数正常用例。

  1. web3.HTTPProvider 用于连接基于 http 和 https 的 JSON-RPC 服务器。
  2. web3.IPCProvider 用于连接基于 IPC 套接字的 JSON-RPC 服务器。

HTTPProvider 采用可以找到服务器的完整 URI。对于本地开发,这类似于http://localhost:8545

IPCProvider 采用可以找到 IPC 套接字的文件系统路径。如果没有提供参数,它将使用您的操作系统的默认路径。

>>> from web3 import Web3, HTTPProvider, IPCProvider

# Note that you should create only one RPCProvider per
# process, as it recycles underlying TCP/IP network connections between
# your process and Ethereum node
>>> web3 = Web3(HTTPProvider('http://localhost:8545'))

# or for an IPC based connection
>>> web3 = Web3(IPCProvider())

更多信息请阅读docs

注意:在安装 web3 库时安装最新的。 相反,您正在做的事情是:

from web3 import Web3, HTTPProvider
# For HTTPProvider
w3 = Web3(HTTPProvider('http://localhost:8545.'))

希望对您有所帮助! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2013-09-11
    • 2021-07-12
    • 2017-08-22
    • 2011-09-29
    相关资源
    最近更新 更多