3、环境搭建:Python 环境配置、Jupyter Notebook 安装、Web3.py 库安装与基础调用
好,咱们正式开始动手了。做链上数据分析,说白了就是跟区块链节点打交道。你得先有一把趁手的「扳手」——也就是开发环境。这一章,我带你一步步把 Python、Jupyter Notebook 和 Web3.py 装好,并跑通第一个调用。
核心逻辑:Python 是语言,Jupyter 是笔记本,Web3.py 是连接链的桥梁。三者缺一不可。
3.1 Python 环境配置
我个人习惯用 Python 3.9 或 3.10。为什么?因为 Web3.py 对这两个版本支持最稳。你如果装 3.12,有些老包可能报错。嗯,这里要注意:别追新版本,稳定第一。
安装步骤:
- 去
python.org下载对应系统的安装包 - 安装时记得勾选「Add Python to PATH」
- 打开终端(CMD 或 Terminal),输入
python --version验证
我的小技巧:我在项目中遇到过好几次 PATH 没配好导致「python 不是内部命令」的尴尬。所以安装时一定勾选那个选项,省得后面折腾。
# 验证 Python 是否安装成功
python --version
# 输出示例:Python 3.10.11
# 检查 pip 包管理器
pip --version
# 输出示例:pip 23.2.1 from ...
3.2 Jupyter Notebook 安装
Jupyter Notebook 这东西,说白了就是一个能写代码、能记笔记、还能画图的「超级记事本」。我刚开始做链上分析时,全靠它一边查数据一边写注释,效率翻倍。
安装命令:
# 用 pip 安装 Jupyter
pip install jupyter
# 启动 Jupyter Notebook
jupyter notebook
启动后,浏览器会自动打开一个页面。你点「New」→「Python 3」就能新建一个笔记本。你想想看,这比在终端里一行行敲代码舒服多了。
避坑指南:我曾经在 Windows 上遇到 Jupyter 启动后浏览器不自动打开的情况。解决办法很简单:复制终端里显示的 URL(比如 http://localhost:8888/tree),手动粘贴到浏览器地址栏就行。
3.3 Web3.py 库安装
Web3.py 是咱们连接以太坊节点的核心工具。它就像一根「数据水管」,一头接区块链,一头接你的 Python 代码。
# 安装 Web3.py
pip install web3
# 验证安装
python -c "import web3; print(web3.__version__)"
# 输出示例:6.15.1
重要提醒:Web3.py 版本迭代很快。我建议你安装时指定版本,比如 pip install web3==6.15.1,这样能保证和教程里的代码完全兼容。
3.4 基础调用:连接以太坊节点
装好了,咱们试试能不能连上链。这里我用的是公共 RPC 节点——Infura。你如果没有自己的节点,用这个最方便。
from web3 import Web3
# 连接以太坊主网(公共节点)
infura_url = "https://mainnet.infura.io/v3/YOUR_PROJECT_ID"
w3 = Web3(Web3.HTTPProvider(infura_url))
# 检查是否连接成功
if w3.is_connected():
print("✅ 连接成功!")
print(f"当前区块高度:{w3.eth.block_number}")
else:
print("❌ 连接失败,请检查网络或 RPC 地址")
运行后如果看到「连接成功」和区块高度,恭喜你,环境搭建完成!
我的经验:第一次跑这个代码时,我忘了替换 YOUR_PROJECT_ID,结果一直报错。你记得去 Infura 官网注册一个免费账号,拿到 Project ID 再填进去。
3.5 常用 RPC 节点对比
| 节点服务商 | 免费额度 | 适用场景 | 备注 |
|---|---|---|---|
| Infura | 10 万请求/天 | 主网、测试网 | 最常用,稳定 |
| Alchemy | 3 亿计算单元/月 | 主网、L2 | 功能更丰富 |
| QuickNode | 有限免费 | 高性能需求 | 付费后更快 |
| 本地节点(Geth) | 无限制 | 深度分析 | 需要同步全链数据 |
我个人建议:刚开始用 Infura 就够了。等你要做高频查询或大规模分析时,再考虑 Alchemy 或本地节点。
3.6 虚拟环境(强烈推荐)
你想想看,如果每个项目都用全局 Python,包版本冲突是迟早的事。我踩过这个坑——一个项目要 Web3.py 5.x,另一个要 6.x,结果全局装了一个版本,另一个项目直接崩了。
# 创建虚拟环境
python -m venv chain_analysis_env
# 激活(Windows)
chain_analysis_env\Scripts\activate
# 激活(Mac/Linux)
source chain_analysis_env/bin/activate
# 在虚拟环境中安装依赖
pip install web3 jupyter
曾经踩过的坑:我试过在虚拟环境外直接装包,结果搞乱了系统 Python。后来每次新项目都新建虚拟环境,再也没出过问题。记住:虚拟环境是你的「隔离沙箱」,用起来。
3.7 快速验证:完整测试脚本
最后,给你一个完整的测试脚本。跑通它,说明你的环境完全就绪。
# test_env.py
from web3 import Web3
# 1. 连接节点
w3 = Web3(Web3.HTTPProvider("https://mainnet.infura.io/v3/YOUR_PROJECT_ID"))
# 2. 检查连接
assert w3.is_connected(), "连接失败"
# 3. 获取基本信息
block = w3.eth.get_block('latest')
print(f"最新区块:{block['number']}")
print(f"区块时间:{block['timestamp']}")
print(f"交易数量:{len(block['transactions'])}")
# 4. 获取 ETH 价格(通过 Uniswap 池子)
# 这里只是示意,实际需要合约 ABI
print("环境搭建完成,可以开始链上分析!")
嗯,到这里环境就搭好了。你可能会问:「为什么不用 Anaconda?」其实也可以,但我个人更喜欢轻量级的 pip + 虚拟环境组合,更灵活,也更容易排查问题。