Python 是量化回测和实盘中最常用的语言工具,要使用 Python,首先要选择一个 Python 发行版并安装。
在本文,我整理了 系统自带
、官网
、Homebrew
、Pyenv
、Anaconda
、Miniconda
、Miniforge
和 Mambaforge
这些 Python 发行版的特点,并给出我现在使用的发行版。
在 macOS 和 Linux 上使用自带 Python 的最大优点就是方便,打开 Pycharm 就能开始开发,打开 Terminal 敲上 python
就能用。
它的最大缺点也正是由于其集成的便利带来的:Python 的应用环境和操作系统耦合太紧密。
这两个系统自带 Python 的原因,是操作系统的部分应用也是使用 Python 开发的,也需要 Python 运行环境。
使用自带 Python 安装库的时候,经常遇到权限问题,因为默认 site-packages 的目录经常是 root 外用户不可写的。当然这个权限问题,可以配置将库安装到 user 目录,或通过 venv 新建环境解决,但毕竟多了一些步骤,在环境上也不够纯净与隔离。
经常做回测开发的朋友知道,有些 Python 软件包的版本支持的 Python 的版本不同,使用系统自带 Python 可能无法安装和运行。比如某软件包只支持 Python 3.10 以下的版本,而某 Linux 自带了 Python 3.11 并且无法降级至 3.10,会无法运行此软件包。
macOS 下的 Homebrew 是安装命令行工具的利器,它也可以安装 Python。
但它只能安装一个 Python,如果只使用一个 Python 版本的话,可以选择这种方式。
长期来看,总会遇到安装多 Python 版本场景,所以我不会选择这种安装方式。
官网下载的 Python 十分纯净,运行安装包安装也方便。
如果要同时使用 Python 3.10 和 Python 3.11,要分别下载安装包,并安装到不同目录。多个 Python 安装后环境变量互相覆盖,在 shell 内只能有一个 Python 生效,切换版本不太方便。
从名字可以看出来 Pyenv 会支持多 environments。
Pyenv 会在 home 目录下生成一个 .pyenv 目录,所有 Python 版本都安装在这个目录下,十分纯净。
如果不使用 conda install
安装包的话,Pyenv 也是一个选择。
Anaconda 是经常推荐给数据分析新手的 Python 发行版。
它带有界面安装器,继承了常用的数据分析 Python 软件包,所以安装包的体积也不小,macOS 上的达到了 600M 以上。
安装完后,有界面管理器,可以在界面中操作 Python 软件包的安装、升级和卸载。
Anaconda 也可以安装创建维护多个环境,每个环境使用不同的 Python 版本。
Anaconda 还提供了 conda 命令,功能类似于 pip,可安装托管于 Anaconda 的软件包,作为 pypi 软件源的补充。
因为附带了大量我不需要的软件包,我不会选择 Anaconda,喜欢界面环境和简单使用的朋友可以选择。
Miniconda 是 Anaconda 的迷你版,没有额外附带软件包,也只有命令行操作方式。
Miniconda 拥有 Anaconda 核心功能和组建,比如多环境支持和 conda 命令。
它需要下载安装包并使用命令行安装,可能对程序新手不太友好,不过可以搜索相关教程解决。
我不选择 Miniconda 的原因,是它默认的 conda 软件包的 channel 源为 anaconda
,下面有另外的选择。
Miniforge 和 Miniconda 功能一致,不同之处,在于它默认软件包的 channel 源是 conda-forge。
官方 anaconda
源商用情况下有许可证风险,网上能搜到它的许可证和相关信息。conda-forge 是社区维护的软件包源,与官方 anaconda
源相比软件包新且更新速度快,是当年率先支持苹果 m1 芯片的源,赢得了不少用户。conda-forge 源我已经使用了 2 年时间。
Mambaforge 是我目前使用的 Python 发行版,它与 Miniforge 相比,多带了 mamba 命令。这个命令功能和用法与 conda 命令相同,不同之处在于它提升了包安装的速度,我在使用时候感觉提升很明显。
方法 | 安装方便 | 纯净 | 目录隔离 | 多版本 | conda 包 |
---|---|---|---|---|---|
自带 | ✅ | ❌ | ❌ | ❌ | ❌ |
官网 | ✅ | ✅ | ✅ | ❌ | ❌ |
Homebrew | ✅ | ✅ | ✅ | ❌ | ❌ |
Pyenv | ❌ | ✅ | ✅ | ✅ | ❌ |
Anaconda | ✅ | ❌ | ✅ | ✅ | ✅ |
Miniconda | ❌ | ✅ | ✅ | ✅ | ✅ |
Mambaforge | ❌ | ✅ | ✅ | ✅ | ✅ |
总结下来,Mambaforge 在纯净、目录隔离、多版本、额外 conda 包上有优势,是我目前的选择。