第三章 Python环境搭建:Anaconda安装与虚拟环境管理

做量化交易,第一件事不是写策略,而是搭环境。

我见过太多人,策略写得挺好,结果一跑就报错。查了半天,原来是Python版本不对,或者某个包冲突了。说白了,环境问题能让你怀疑人生。

这一章,咱们就把Python环境彻底搞定。以后你换电脑、换服务器,都能十分钟内把环境复现出来。

3.1 为什么选Anaconda?

Python本身只是个解释器。但做量化,你需要numpy、pandas、scipy、statsmodels、backtrader……几十个包。手动装?你会疯的。

Anaconda就是帮你管理这一切的工具。它自带Python,还带了一个叫conda的包管理器。

我个人习惯,不管在Windows还是Linux上,第一件事就是装Anaconda。为什么?

  • 开箱即用:装完就有150+常用科学计算包
  • 环境隔离:不同项目用不同Python版本,互不干扰
  • 跨平台:Windows、macOS、Linux,一套操作走天下
我的经验:别用系统自带的Python。尤其是Mac和Linux,系统Python是给系统用的。你乱改依赖,搞不好系统都崩了。Anaconda装在用户目录下,安全又干净。

3.2 安装Anaconda

去官网下载安装包。选Python 3.9版本的那个。为什么选3.9?后面会讲。

安装过程很简单,一路默认就行。但有两点要注意:

  1. 安装路径不要有中文。我见过有人装在「D:\量化交易\工具」下面,结果各种报错。老老实实用英文路径。
  2. 勾选「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稳定。

注意:别用Python 3.11或3.12。很多量化库还没跟上。做交易,稳定第一,新版本等半年再说。

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_envarbitrage_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 实战:搭建一个量化交易环境

来,咱们动手搭一个完整的量化环境。跟着我做:

  1. 创建环境:conda create -n quant_trading python=3.9
  2. 激活环境:conda activate quant_trading
  3. 安装核心库:
conda install numpy pandas matplotlib scipy statsmodels
pip install backtrader ta-lib akshare
  1. 生成requirements.txt:pip freeze > requirements.txt
  2. 把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环境搭建的核心逻辑:

Python环境搭建知识体系 量化交易Python环境 Anaconda安装 Python版本选择 虚拟环境管理 依赖包管理 • 官网下载 • 路径无中文 • 添加到PATH • 3.8:老项目 • 3.9:推荐 • 3.10:尝鲜 • conda create • activate/deactivate • 环境隔离 • requirements.txt • pip freeze / install

这张图把整个环境搭建的流程串起来了。从Anaconda安装开始,到Python版本选择,再到虚拟环境管理,最后用requirements.txt收尾。每一步都环环相扣。

你想想看,如果哪一步没做好,后面都会出问题。所以别嫌麻烦,一步一个脚印来。


公众号:蓝海资料掘金营,微信deep3321