第三章 Python环境搭建:Anaconda安装与虚拟环境管理
做量化交易,第一件事不是写策略,而是搭环境。
我见过太多人,策略写得挺好,结果一跑就报错。查了半天,原来是Python版本不对,或者某个包冲突了。说白了,环境问题能让你怀疑人生。
这一章,咱们就把Python环境彻底搞定。以后你换电脑、换服务器,都能十分钟内把环境复现出来。
3.1 为什么选Anaconda?
Python本身只是个解释器。但做量化,你需要numpy、pandas、scipy、statsmodels、backtrader……几十个包。手动装?你会疯的。
Anaconda就是帮你管理这一切的工具。它自带Python,还带了一个叫conda的包管理器。
我个人习惯,不管在Windows还是Linux上,第一件事就是装Anaconda。为什么?
- 开箱即用:装完就有150+常用科学计算包
- 环境隔离:不同项目用不同Python版本,互不干扰
- 跨平台:Windows、macOS、Linux,一套操作走天下
3.2 安装Anaconda
去官网下载安装包。选Python 3.9版本的那个。为什么选3.9?后面会讲。
安装过程很简单,一路默认就行。但有两点要注意:
- 安装路径不要有中文。我见过有人装在「D:\量化交易\工具」下面,结果各种报错。老老实实用英文路径。
- 勾选「Add Anaconda to my PATH environment variable」。虽然安装程序会警告你,但勾上更方便。如果你不勾,每次用conda都要先激活环境,麻烦。
装完后,打开终端(Windows用Anaconda Prompt),输入:
conda --version
能看到版本号,就说明装好了。
3.3 Python版本选择:3.8、3.9还是3.10?
这是个好问题。我直接给结论:
| 版本 | 适合场景 | 我的建议 |
|---|---|---|
| Python 3.8 | 老项目、某些旧版库 | 除非有特殊依赖,否则别用 |
| Python 3.9 | 量化交易首选 | 我推荐这个 |
| Python 3.10 | 新项目、想尝鲜 | 部分库可能还没适配 |
为什么推荐3.9?
我在项目中遇到过,Python 3.10刚出来时,ta-lib(技术指标库)装不上。折腾了两天,最后退回3.9才搞定。你想想看,策略写好了,结果因为版本问题跑不了,多憋屈。
Python 3.9是目前兼容性最好的版本。几乎所有量化库都支持。而且性能比3.8有提升,语法也比3.10稳定。
3.4 虚拟环境管理
虚拟环境是干嘛的?说白了,就是给你的每个项目一个独立的「小房间」。
比如你项目A用pandas 1.3,项目B用pandas 2.0。没有虚拟环境,这两个版本会打架。有了虚拟环境,各玩各的,互不干扰。
3.4.1 创建虚拟环境
conda create -n quant_env python=3.9
这条命令干了三件事:
- 创建一个叫
quant_env的环境 - 指定Python版本为3.9
- 自动安装基础依赖
我个人习惯,每个策略项目都建一个独立环境。比如 momentum_strategy_env、arbitrage_env。这样万一某个环境搞坏了,不影响其他项目。
3.4.2 激活与退出
# 激活环境
conda activate quant_env
# 退出环境
conda deactivate
激活后,终端前面会出现 (quant_env) 的标识。这时候你装的所有包,都只在这个环境里生效。
.env 文件,里面写上环境名。这样换电脑时,看一眼就知道该激活哪个环境。
3.4.3 查看和管理环境
# 查看所有环境
conda env list
# 删除环境
conda env remove -n quant_env
# 复制环境
conda create -n new_env --clone old_env
嗯,这里要注意:删除环境是不可逆的。我曾经手滑删错了环境,结果那个项目的依赖全没了。后来我学乖了,重要环境先导出再操作。
3.5 依赖包管理与requirements.txt
环境搭好了,接下来就是装包。但你不能一个一个手动装吧?
专业的做法,是用 requirements.txt 来管理所有依赖。
3.5.1 生成requirements.txt
激活你的环境,然后:
pip freeze > requirements.txt
这条命令会把当前环境里所有已安装的包,连同版本号,都写进 requirements.txt 里。
打开看看,大概是这样的:
numpy==1.24.3
pandas==2.0.3
matplotlib==3.7.1
backtrader==1.9.76.123
ta-lib==0.4.28
3.5.2 从requirements.txt安装
换到新电脑,或者别人要复现你的环境,只需要:
pip install -r requirements.txt
一条命令,所有依赖全部装好。版本完全一致,不会出现「在我电脑上能跑啊」这种尴尬。
requirements.txt。这是量化交易的基本素养。我见过有人把项目发出去,连个依赖文件都没有。对方装了半天,版本还对不上。你说这多耽误事?
3.5.3 用conda还是pip?
这是个经典问题。我的做法是:
- 优先用conda:conda安装的包是预编译的,不会出现编译错误。尤其适合numpy、pandas这种底层库。
- conda没有的,用pip:有些小众库只有pip版本。比如某些量化平台的自研库。
- 别混用:同一个环境里,尽量只用一种包管理器。混用容易出问题。
我曾经在一个环境里,先用conda装了numpy,又用pip装了另一个版本。结果两个版本冲突,程序直接崩溃。从那以后,我每个环境只选一种方式。
3.6 实战:搭建一个量化交易环境
来,咱们动手搭一个完整的量化环境。跟着我做:
- 创建环境:
conda create -n quant_trading python=3.9 - 激活环境:
conda activate quant_trading - 安装核心库:
conda install numpy pandas matplotlib scipy statsmodels
pip install backtrader ta-lib akshare
- 生成requirements.txt:
pip freeze > requirements.txt - 把requirements.txt提交到Git仓库
搞定。以后不管换到哪台机器,只要拉下代码,执行 pip install -r requirements.txt,环境就一模一样。
requirements.txt 里把核心库的版本固定死,比如 pandas==2.0.3。但一些不重要的库,我会写成 pandas>=2.0.0,留点弹性。这样既保证核心依赖稳定,又不会因为版本锁死导致安装失败。
3.7 常见问题与避坑
做量化这几年,我踩过不少坑。分享几个最常见的:
- 「conda install 太慢了」:换国内镜像源。执行
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/,速度能快十倍。 - 「pip install 报错」:先升级pip:
pip install --upgrade pip。很多编译错误都是pip版本太旧导致的。 - 「环境搞乱了怎么办」:别修了,直接删掉重建。反正有requirements.txt,重建也就几分钟的事。
我曾经在服务器上调试一个策略,环境搞了三天都没弄好。最后狠心删掉重建,十分钟搞定。有时候,重来比修复更高效。
3.8 本章知识体系
下面这张图,帮你理清Python环境搭建的核心逻辑:
这张图把整个环境搭建的流程串起来了。从Anaconda安装开始,到Python版本选择,再到虚拟环境管理,最后用requirements.txt收尾。每一步都环环相扣。
你想想看,如果哪一步没做好,后面都会出问题。所以别嫌麻烦,一步一个脚印来。
公众号:蓝海资料掘金营,微信deep3321