DeprecationWarning:在python3中

时间:2018-02-20 03:48:35

标签: python python-3.x web3

在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 __)

还有更多像这样的人。 我怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

  1. web3.HTTPProvider,用于连接到基于http和https的JSON-RPC服务器。
  2. web3.IPCProvider,用于连接到基于ipc套接字的JSON-RPC服务器。
  3. 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.'))
    

    希望这会对你有所帮助! :)