Web3.py 学习(一)

一、什么是Web3.py

       Web3.py is a python library for interacting with Ethereum. Its API is derived from the Web3.js Javascript API and should be familiar to anyone who has used web3.js.

       Web3.py是连接以太坊的python库,它的API从web3.js中派生而来。如果你用过web3.js,你会对它的API很熟悉。但惭愧的是,作为一个以太坊上Dapp的开发者,我几乎没有直接使用过web3.js,也没有看过它的API。

       虽然我以前在本地环境(比如Ganache)中开发Dapp时已经使用过web3.py,但只是很简单的应用,并没有系统的学习过(部分原因是我也没有系统学过python,只是看了大约10个小时文档)。今天把web3.py的官方文档打开,准备系统的学习一下。

       笔者的学习环境为 Mac OS + python 3.7.3。

二、安装并测试web3.py

       我以前已经安装过了web3.py,所以就直接按照文档中的应用进行测试了。没想到会遇到一些问题,记录如下,以供出现同样问题的读者参考。

2.1 设置环境变量

       打开终端,默认就在~目录,运行 vim .bash_profile,按i插入,在最后一行增加:

export WEB3_INFURA_PROJECT_ID=your_infura_key

       这其中your_infura_key是连接infura节点所需要的key。如果没有,去https://infura.io/ 新建一个工程就可以得到了。

       按下esc,接着是:,然后wq保存退出。再运行source .bash_profile来使刚才的环境变量设置生效。

2.2 解决各种错误

       在终端中执行python3,进入解释器,或者运行IDLE应用程序也可。执行以下代码:

>>> from web3.auto.infura import w3
>>> w3.eth.blockNumber

然而,几秒的等待后,报如下错误:

certificate verify failed: unable to get local issuer certificate

       Google了一下,是因为python3.6和3.7不再依赖于Mac OS的openSSL,它使用自己的openSSL,解决办法有两种:
       1、运行python自带的安装程序

cd /Applications/Python\ 3.7/
./Install\ Certificates.command

       2、安装certifi

pip install certifi

       其实这两种方法是等效的。好了,这个问题就是这样解决的。

       重新执行脚本来获取当前块高度,然而又报错了:

websockets.exceptions.InvalidStatusCode: Status code not 101: 401

       继续Google,是讲websockets这个库6.0和7.0有区别。看来我的库是6.0的,这个好办,升级它:

pip install --upgrade websockets

       成功的将websockets从6.0升级到了8.0。然而升级的过程中又提示:

ERROR: web3 4.8.1 has requirement websockets<7.0.0,>=6.0.0, 
but you'll have websockets 8.1 which is incompatible.

       无语了,看来得继续升级我的web3.py。运行:

pip install --upgrade web3

       等待升级完成。好了,这下没有问题了。

2.3 连接以太坊节点

       在终端重新运行phthon3,进行解释器,然后执行:

>>> from web3.auto.infura import w3
>>> w3.eth.blockNumber

       短时间的等待后会输出当前区块高度,测试的时候为:9462097。

       查看最新区块详细信息:

>>> w3.eth.getBlock('latest')

       很快就会有输出,显示当前区块的一些信息,连接以太坊节点的测试通过。

三、连接本地以太坊

       平常我们使用本地开发环境(Ganache)时,怎么连接本地以太坊呢?文档中给出了一种方法,使用HTTPProvider

>>> w3 = Web3(HTTPProvider('http://localhost:8545'))

       不过我们可以不使用这个方法,推荐使用另一种:

>>> from web3.auto import w3
>>> w3.isConnected()
True
>>> w3.eth.blockNumber
46
>>> 

四、熟悉基础API

       熟悉基础API时我建议大家不要在终端执行python3来进入解释器,而是运行IDLE程序。因为在IDLE里,API是有提示的,如下图:
在这里插入图片描述
       这里提示输入一个数字和一个字符串,返回一个整数。注意,这个字符串是指以太坊上的单位,比如etherGwei等。

       文档中列出的基础API除了检查是否可编码外,平常开发中都会经常使用。

       Web3.py第一章总览就学习结束了。本次学习内容不多,重点是掌握web3.py的安装和连接以太坊节点的方法。同时也要对基础的API有一些了解,毕竟要经常使用的。

       期待下一次的学习。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: paddlepaddle是一种开源深度学习框架,xml2json.py是该框架中的一个文件。 xml2json.py是一个用于将XML格式的数据转换为JSON格式的工具。在深度学习中,数据通常以不同的格式存在,而XML和JSON都是常用的数据交换格式之一。通过将XML数据转换为JSON格式,可以更方便地在深度学习框架中进行数据处理和分析。 在使用paddlepaddle进行深度学习任务时,我们可能需要使用xml2json.py来处理特定的数据集。例如,如果我们有一个XML格式的图像标注数据集,可以使用xml2json.py将其转换为JSON格式,方便地读取和处理。 使用xml2json.py非常简单。我们只需要执行相应的命令或调用相关的函数,即可将XML数据转换为JSON格式。具体的使用方法可以参考相关的文档和代码示例。 总的来说,paddlepaddle的xml2json.py是一个用于将XML数据转换为JSON格式的工具,在深度学习任务中起到了简化数据处理流程的作用。在使用该工具时,我们只需要按照相应的方法调用,即可快速地将XML格式的数据转换为JSON格式,方便进一步的数据分析和处理。 ### 回答2: paddlepaddle xml2json.py是一个用于将XML文件转换为JSON格式的Python脚本。XML是一种标记语言,常用于在不同应用程序之间交换数据。JSON是一种轻量级的数据交换格式,在Web应用程序中广泛使用。 使用paddlepaddle xml2json.py脚本可以方便地将XML文件转换为JSON格式的数据。这对于那些需要将XML数据转换为JSON的开发人员和数据分析师来说非常有用。 使用该脚本的步骤如下: 1. 首先,确保已经安装了Python和paddlepaddle库。可以在命令行中运行pip install paddlepaddle命令来安装该库。 2. 将要转换的XML文件放置在与xml2json.py脚本相同的目录中。 3. 打开终端或命令行窗口,并导航到xml2json.py脚本所在的目录。 4. 运行以下命令来执行转换: python xml2json.py your_xml_file.xml 值得注意的是,将your_xml_file.xml替换为实际的XML文件名。 5. 执行完上述命令后,脚本将读取XML文件并将其转换为JSON格式。转换后的JSON数据会在终端或命令行窗口中显示出来。 使用paddlepaddle xml2json.py脚本可以帮助用户快速、简便地将XML数据转换为JSON格式。这对于进一步处理和分析数据非常有帮助,尤其是在涉及不同格式的数据交换和处理时。通过将数据转换为JSON格式,可以更方便地在不同的应用程序和平台之间进行数据交互和共享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AiMateZero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值