第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用户

  1. 去Python官网下载3.10.x版本(建议3.10.11,最后一个稳定小版本)。
  2. 安装时,务必勾选「Add Python to PATH」。我曾经帮一个学员远程调试,折腾半小时才发现他没勾这个选项。
  3. 选择「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。它们的关系,我画了张图帮你理解。

Python科学计算库生态 NumPy 多维数组 & 矩阵运算 底层:C语言实现 Pandas DataFrame & 时间序列 基于NumPy构建 SciPy 统计 & 优化算法 基于NumPy构建 期货套利策略实现 价差计算 · 信号生成 · 回测验证 依赖关系: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
版本锁定很重要:我建议你记录下版本号。不同版本之间,有些函数行为会变。比如pandas 2.0改了concat的默认行为,我有个回测脚本因此跑出了不同结果,排查了一下午。

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