4. Python环境搭建:Python 3.10+安装、虚拟环境管理、依赖管理

做量化交易,尤其是跨交易所套利,Python环境搞不好,后面全是坑。我见过太多人花了一周写策略,结果因为环境问题浪费两天去排查。说白了,环境搭建就是地基,地基不稳,楼盖得再高也得塌。

这一章,我带你把Python 3.10+的安装、虚拟环境管理、依赖管理这三个核心环节彻底捋清楚。嗯,都是我在实战中踩过坑之后总结出来的经验。

4.1 Python 3.10+ 安装:别用太老,也别追太新

为什么强调3.10+?因为3.8、3.9虽然稳定,但很多新库(比如某些异步框架、类型注解特性)已经开始放弃对它们的支持了。而3.12、3.13刚出,部分第三方库还没适配好,容易出兼容性问题。

我个人习惯:生产环境用3.10或3.11,开发环境可以尝鲜3.12。跨交易所套利系统对网络IO和异步处理要求高,3.10+的协程和模式匹配特性用起来很顺手。

推荐版本: Python 3.10.11 或 Python 3.11.9

安装步骤(Linux / macOS / Windows)

系统 安装方式 备注
Ubuntu/Debian sudo apt install python3.10 python3.10-venv 记得装venv模块
macOS brew install python@3.10 Homebrew管理,方便切换
Windows 官网下载安装包,勾选"Add to PATH" 建议用pyenv-win管理多版本
我曾经踩过的坑: 在Ubuntu上直接用apt装python3,结果系统自带的python3.8被覆盖了,导致系统工具(如gnome-terminal)崩溃。后来我学乖了,用apt install python3.10指定版本,或者用pyenv隔离管理。

4.2 虚拟环境管理:venv vs conda,我全都要

虚拟环境这东西,说白了就是给每个项目一个独立的Python解释器和包空间。你想想看,项目A需要pandas 1.5,项目B需要pandas 2.0,没有虚拟环境,你怎么办?

我常用的两种方案:

  • venv:Python自带的轻量级方案,够用、简单、无依赖。
  • conda:适合需要管理非Python依赖(如C++库、CUDA)的场景,或者团队协作时统一环境。

venv 实战

# 创建虚拟环境
python3.10 -m venv trading_env

# 激活(Linux/macOS)
source trading_env/bin/activate

# 激活(Windows)
trading_env\Scripts\activate

# 退出
deactivate

我个人习惯把虚拟环境建在项目根目录下,命名为.venv(前面加个点,隐藏起来,看着清爽)。然后在.gitignore里加上.venv/,避免把环境提交到代码仓库。

conda 实战

# 创建环境并指定Python版本
conda create -n trading_env python=3.10

# 激活
conda activate trading_env

# 退出
conda deactivate

# 导出环境
conda env export > environment.yml

# 从文件创建环境
conda env create -f environment.yml
我的建议: 如果团队里有人用Windows、有人用macOS,conda的跨平台一致性更好。但如果你只是自己写策略,venv完全够用,还省去了装Anaconda那几百兆的麻烦。

4.3 依赖管理:从 requirements.txt 到 poetry

依赖管理,说白了就是把你项目用到的所有第三方库和版本号记录下来。这样别人拿到你的代码,一条命令就能把环境复现出来。

requirements.txt:经典方案

# 生成当前环境的依赖列表
pip freeze > requirements.txt

# 从文件安装依赖
pip install -r requirements.txt

嗯,这里有个坑。pip freeze会把所有依赖(包括依赖的依赖)都列出来,有时候会多出一些你根本没用到的包。我建议用pipreqs这个工具,它只扫描你代码里实际import的包:

pip install pipreqs
pipreqs ./ --encoding=utf-8 --force

poetry:现代方案

如果你觉得requirements.txt太简陋,想用更专业的工具,我推荐poetry。它集成了虚拟环境管理、依赖解析、打包发布等功能。

# 安装poetry
curl -sSL https://install.python-poetry.org | python3 -

# 初始化项目
poetry init

# 添加依赖
poetry add pandas numpy ccxt

# 安装所有依赖
poetry install

# 导出requirements.txt(兼容旧项目)
poetry export -f requirements.txt --output requirements.txt
poetry 的核心优势:
  • 自动解析依赖冲突(比pip聪明多了)
  • 生成poetry.lock文件,锁定所有依赖的精确版本
  • 支持分组管理(dev依赖、生产依赖分开)

我在跨交易所套利项目中,用的是poetry + conda的组合。conda管理Python版本和系统级依赖,poetry管理Python包。这样既保证了环境一致性,又享受了poetry的依赖解析能力。

4.4 知识体系总览

下面这张图,是我对本章知识体系的总结。你可以把它当作一张地图,随时回来对照。

Python环境搭建知识体系 Python 3.10+ 安装 虚拟环境管理 依赖管理 推荐 3.10 / 3.11 多版本管理 (pyenv) 系统包 vs 用户包 venv(轻量原生) conda(跨平台) 激活/退出/删除 requirements.txt poetry(现代方案) lock文件锁定版本 核心原则:环境隔离 + 版本锁定 + 可复现 跨交易所套利系统对稳定性要求极高,环境一致性是底线

4.5 避坑指南:我踩过的那些雷

最后,分享几个我在实战中遇到的典型问题,希望能帮你少走弯路。

坑1: 在系统Python环境下直接pip install,结果破坏了系统依赖。我曾经在服务器上装了一个新版本的requests,结果系统自带的某个工具因为依赖冲突直接罢工了。从那以后,我坚持每个项目都用虚拟环境。
坑2: requirements.txt里写死了版本号,比如pandas==1.5.3。后来发现这个版本有个bug,导致我的套利策略在特定行情下算错了价差。现在我的做法是:用>=指定最低版本,同时用lock文件锁定精确版本。
我的小技巧: 在项目根目录放一个Makefile,把常用的环境命令写进去。比如make setup自动创建虚拟环境并安装依赖,make clean删除环境。这样团队里任何人拿到项目,一条命令就能搞定环境。

好了,Python环境搭建这部分就讲到这里。记住一句话:环境搞好了,后面写策略才能安心。下一章我们开始讲跨交易所API对接,那才是真正有意思的部分。


专注资料整理