第二章:环境准备——Python环境、Web3.py、CCXT库安装与配置

说实话,很多做交易的朋友一开始就急着写策略,结果环境没配好,折腾半天连数据都拉不下来。我见过太多人卡在这一步了。今天咱们就把地基打牢,后面写代码才能顺风顺水。

2.1 Python环境搭建

我个人习惯用 Python 3.9 以上版本。为什么?因为 Web3.py 和 CCXT 对新版本支持更好,而且一些新语法写起来确实爽。

第一步:安装 Python

去官网下载安装包,记得勾选「Add Python to PATH」。这个选项不勾,后面命令行里敲 python 会报错。我刚开始学的时候就吃过这个亏,折腾了半小时才发现。

第二步:创建虚拟环境

虚拟环境这东西,说白了就是给你的项目建一个独立的小房间。不同项目用不同版本的库,互不干扰。

# 创建虚拟环境
python -m venv crypto_env

# 激活虚拟环境(Windows)
crypto_env\Scripts\activate

# 激活虚拟环境(Mac/Linux)
source crypto_env/bin/activate

看到命令行前面多了个 (crypto_env) 就说明激活成功了。嗯,这里要注意,每次打开终端都要重新激活一下。

2.2 安装 Web3.py——链上数据的眼睛

Web3.py 是连接以太坊区块链的桥梁。你想查链上数据,比如某个地址的余额、某笔交易的详情,都得靠它。

pip install web3

就这么简单?对,但有个坑——国内网络有时候下载慢。我曾经在项目里等安装等了十分钟没反应,后来发现是网络问题。

小技巧: 用国内镜像源加速安装
pip install web3 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,咱们测试一下能不能连上以太坊节点:

from web3 import Web3

# 连接公共节点(Infura 需要注册获取 URL)
infura_url = "https://mainnet.infura.io/v3/YOUR_PROJECT_ID"
w3 = Web3(Web3.HTTPProvider(infura_url))

# 检查是否连接成功
print(w3.is_connected())  # 返回 True 就对了

如果返回 False,别慌。检查一下你的网络能不能访问外网,或者换个节点试试。我个人习惯用 Alchemy,稳定性比 Infura 好一些。

2.3 安装 CCXT——交易所的万能遥控器

CCXT 这个库,说白了就是统一了上百家交易所的 API。你写一套代码,就能在币安、OKX、Bybit 等交易所同时交易。是不是很爽?

pip install ccxt

安装完测试一下:

import ccxt

# 创建币安交易所对象
exchange = ccxt.binance()

# 获取 BTC/USDT 的当前价格
ticker = exchange.fetch_ticker('BTC/USDT')
print(f"BTC 当前价格: {ticker['last']} USDT")

能打印出价格,说明环境配好了。这里有个细节——CCXT 默认用的是交易所的公共 API,不需要 API Key 也能拉行情数据。但如果你想下单交易,那就得配置 API Key 了。

安全警告: API Key 千万不要硬编码在代码里!我曾经见过有人把 Key 传到 GitHub 上,结果几分钟内账户就被盗了。建议用环境变量或配置文件来管理。

2.4 配置 API Key(交易必备)

如果你只是看数据,这步可以跳过。但要做实盘交易,必须配置。

步骤:

  1. 登录交易所,进入 API 管理页面
  2. 创建一个新 API,权限勾选「交易」和「读取」
  3. 把 API Key 和 Secret 保存到本地文件(千万别截图发群里)
import ccxt
import os

# 从环境变量读取 Key(推荐方式)
exchange = ccxt.binance({
    'apiKey': os.getenv('BINANCE_API_KEY'),
    'secret': os.getenv('BINANCE_SECRET_KEY'),
})

# 测试连接
balance = exchange.fetch_balance()
print(balance['total']['USDT'])  # 查看 USDT 余额

为什么用环境变量?因为这样即使代码被别人看到,你的 Key 也是安全的。我在生产环境里一直这么用,从来没出过问题。

2.5 知识体系总览

下面这张图帮你理清今天装的所有东西之间的关系:

环境准备知识体系 量化交易策略 Python 3.9+ 环境 Web3.py(链上数据) CCXT(交易所数据) 虚拟环境 pip 包管理 节点连接 链上查询 行情数据 API Key 配置 三者结合:Python 做计算,Web3.py 看链上,CCXT 做交易

2.6 常见问题与避坑指南

问题1:安装 Web3.py 时报错

我曾经在 Windows 上遇到一个坑——缺少 Microsoft C++ Build Tools。解决办法很简单,去微软官网下载安装一下就行。

问题2:CCXT 获取数据报错

有时候交易所会限制请求频率。比如币安,1秒内请求超过 20 次就会被封 IP。CCXT 自带限流功能,记得开启:

exchange = ccxt.binance({
    'enableRateLimit': True,  # 开启限流
})

问题3:连接以太坊节点超时

公共节点有时候不稳定。我建议准备两个备用节点,一个不行就换另一个。代码里可以这样写:

providers = [
    "https://mainnet.infura.io/v3/YOUR_KEY",
    "https://eth-mainnet.alchemyapi.io/v2/YOUR_KEY",
]

for url in providers:
    w3 = Web3(Web3.HTTPProvider(url))
    if w3.is_connected():
        print(f"连接成功: {url}")
        break

核心要点回顾:

  • Python 3.9+ + 虚拟环境,这是基础
  • Web3.py 负责链上数据,连接节点要稳定
  • CCXT 负责交易所数据,API Key 要保密
  • 限流、备用节点、环境变量——这三个习惯能帮你省很多事

好了,环境准备就到这里。代码都跑通了吧?如果卡住了,回头检查一下网络和版本。下一章咱们就开始拉真正的链上数据了,到时候你会觉得今天配环境花的功夫都值了。


专注资料整理