第4章:Python环境搭建——Python 3.10安装、虚拟环境管理、常用科学计算库安装
做量化交易,尤其是期货套利,Python环境就是你的武器库。我见过太多人花大把时间研究策略,结果环境配不好,代码跑不起来,白白浪费精力。这一章,咱们就把地基打牢。
4.1 为什么选Python 3.10?
你可能要问,Python版本那么多,为什么非选3.10?
我个人习惯是「追新不追旧,但也不当小白鼠」。3.10这个版本,稳定性经过了市场检验,同时引入了几个对量化非常有用的特性:
- 结构模式匹配(match-case):写条件判断时,代码更清晰。我在处理多合约信号时经常用到。
- 更清晰的错误提示:调试时能少掉几根头发。
- 类型联合操作符(|):写类型注解更方便,对大型项目维护很有帮助。
嗯,这里要注意:别用3.12或3.13,有些科学计算库还没完全适配,容易踩坑。
4.2 Python 3.10 安装实战
安装过程其实很简单,但有几个细节我提醒你注意。
Windows用户
- 去Python官网下载3.10.x版本(建议3.10.11,最后一个稳定小版本)。
- 安装时,务必勾选「Add Python to PATH」。我曾经帮一个学员远程调试,折腾半小时才发现他没勾这个选项。
- 选择「Customize installation」,确保pip被勾选。
macOS/Linux用户
我推荐用pyenv管理多版本Python,这样切换起来很方便。
# 安装pyenv
curl https://pyenv.run | bash
# 安装Python 3.10.11
pyenv install 3.10.11
# 设置全局版本
pyenv global 3.10.11
# 验证
python --version
# 输出:Python 3.10.11
python -c "import this",看到「Zen of Python」就说明环境没问题。这是老程序员之间的默契。
4.3 虚拟环境管理——别让项目打架
做套利策略,你可能同时维护好几个项目。有的用pandas 1.5,有的用2.0。如果不隔离,依赖冲突会让你崩溃。
我常用的两种方式:venv(轻量级)和 conda(重量级)。
4.3.1 venv——Python自带的轻骑兵
venv是Python官方推荐的方案,简单够用。我大部分项目都用它。
# 创建虚拟环境
python -m venv arbitrage_env
# 激活(Windows)
arbitrage_env\Scripts\activate
# 激活(macOS/Linux)
source arbitrage_env/bin/activate
# 退出
deactivate
激活后,终端前面会出现 (arbitrage_env) 字样,说明你已经在虚拟环境里了。这时候安装的包不会影响全局。
~/envs/ 下统一管理,这样项目迁移时不会把一堆环境文件带过去。
4.3.2 conda——科学计算的瑞士军刀
如果你做机器学习或需要非Python依赖(比如C++库),conda更省心。它连numpy的底层库都能帮你搞定。
# 创建环境
conda create -n arbitrage python=3.10
# 激活
conda activate arbitrage
# 安装包
conda install numpy pandas
# 退出
conda deactivate
说白了,venv和conda选哪个?我的建议是:纯Python项目用venv,涉及C扩展或复杂依赖用conda。
4.4 常用科学计算库安装
做期货套利,这三个库是标配:numpy、pandas、scipy。它们的关系,我画了张图帮你理解。
4.4.1 安装命令
在虚拟环境激活状态下,执行:
# 使用pip(venv环境)
pip install numpy==1.24.3 pandas==2.0.3 scipy==1.11.1
# 使用conda(conda环境)
conda install numpy=1.24.3 pandas=2.0.3 scipy=1.11.1
4.4.2 验证安装
装完后,跑个简单测试:
python -c "
import numpy as np
import pandas as pd
import scipy as sp
print(f'NumPy: {np.__version__}')
print(f'Pandas: {pd.__version__}')
print(f'SciPy: {sp.__version__}')
# 快速测试:计算两个合约的价差
price_a = np.array([100, 101, 102])
price_b = np.array([98, 99, 100])
spread = price_a - price_b
print(f'价差序列: {spread}')
"
如果看到版本号和价差结果,说明环境搭建成功。
4.5 环境管理的几个好习惯
做量化久了,我总结了几条经验:
- 每个项目一个独立环境:别偷懒共用环境。我见过有人把回测和生产环境混在一起,结果升级包时把生产搞崩了。
- 用requirements.txt记录依赖:
# 导出当前环境
pip freeze > requirements.txt
# 在新环境安装
pip install -r requirements.txt
- 定期清理不用的环境:虚拟环境多了,磁盘空间不知不觉就没了。我每个月清理一次。
.python-version 文件,里面写上 3.10.11。这样用pyenv的人切进来自动匹配版本,省去沟通成本。
环境搭好了,后面写策略、跑回测才能顺畅。你想想看,如果连环境都搞不定,再好的策略也只是纸上谈兵。这一章的内容,够你应付绝大多数期货套利的开发场景了。
公众号:蓝海资料掘金营,微信deep3321