news 2026/9/12 8:40:04

NautilusTrader 2.x 完整安装指南:平台支持、PyPI/私有源/源码构建与精度模式配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NautilusTrader 2.x 完整安装指南:平台支持、PyPI/私有源/源码构建与精度模式配置

NautilusTrader 2.x 完整安装指南:平台支持、PyPI/私有源/源码构建与精度模式配置

【免费下载链接】nautilus_traderProduction-grade Rust-native trading engine with deterministic event-driven architecture项目地址: https://gitcode.com/GitHub_Trending/na/nautilus_trader

本篇技术指南以 NautilusTrader(基于 Rust 的高性能事件驱动交易引擎)官方安装文档为核心,系统讲解其在 Python 3.12–3.14 下的全部受支持安装路径:PyPI 预编译 wheel、Nautech Systems 私有包索引、从源码构建以及 GitHub Release 二进制。读者读完将掌握 2.x 版本线的正确安装姿势(含--pre参数的必要性)、本地 Rust 开发环境的完整搭建、构建产物供应链验证方法,以及核心值类型高精度/标准精度两种模式的选择与配置。

平台与版本支持范围

NautilusTrader 官方支持 Python 3.12–3.14,覆盖以下 64 位平台(在仓库的 python/pyproject.toml 中requires-python = ">=3.12,<3.15",且.whl分类器明确声明了 3.12/3.13/3.14):

操作系统支持版本CPU 架构
Linux (Ubuntu)22.04 及更新版本x86_64
Linux (Ubuntu)22.04 及更新版本ARM64
macOS15.0 及更新版本ARM64
Windows Server2022 及更新版本x86_64

注:NautilusTrader 在其他平台上可能也能运行,但只有上表所列平台会被开发者常规使用并在 CI 中测试。

Python 支持窗口与 CI 基线

项目遵循 Scientific Python SPEC 0 定义的 Python 支持窗口:每个 Python 次版本在首次发布后支持三年,支持通常在窗口结束后、替代 Python 版本通过兼容性检查后的第一个 NautilusTrader 版本中终止。CI 的持续覆盖来自项目构建所用的 GitHub Actions runner 镜像,各平台的基线策略如下:

  • Linux (Ubuntu):目前固定在ubuntu-22.04,以保持 glibc 2.35 兼容性(即使ubuntu-latest已向前推进)。
  • macOS (ARM64):构建运行在macos-latest上,因此支持范围跟随该 runner 镜像向前演进。
  • Windows (x86_64):目前固定在windows-2022以保持工具链稳定。

在 Linux 上,安装前请用ldd --version确认 glibc 版本为2.35 或更新

推荐的包管理器:uv

项目强烈推荐使用 uv 包管理器配合"纯净"的 CPython 使用。Conda 等其他 Python 发行版可能可用,但不属于官方支持范围。仓库对 uv 版本也有明确约束:python/pyproject.toml[tool.uv]段声明了required-version = ">=0.12,<0.13",本地 uv 超出该范围时uv lock/uv sync会直接失败。此外该段还设置了exclude-newer = "7 days"的供应链冷却策略(详见后文"源码检出内的版本解析陷阱")。

官方安装方式有两种:

  1. 从 PyPI 或 Nautech Systems 包索引安装预编译二进制 wheel
  2. 从源码构建

从 PyPI 安装

2.x 版本线必须使用--pre

当前文档对应NautilusTrader 2.x。PyPI 上不带任何参数的uv pip install nautilus_trader仍会解析到 1.x 版本线,而 1.x 与 2.x 的 Python API 并不互通,这会导致文档中的示例代码抛出ImportErrorTypeError。仓库 python/pyproject.toml 显示当前项目版本为2.0.0rc5,即 2.x 以2.0.0rcN预发布版本号发布到 PyPI。

在 2.0.0 正式发布前,安装 2.x wheel 必须显式加--pre

uv pip install --pre nautilus_trader

安装完成后务必确认版本号以2.开头:

python -c "import nautilus_trader; print(nautilus_trader.__version__)"

关于此命令有两点提醒:

  • --pre必需的,因为这些 wheel 属于预发布构建;但安装后的导入名仍然是nautilus_trader
  • 不建议在生产环境(如控制真实资金的实盘交易)使用发布候选版本
  • 该命令应在 NautilusTrader 源码检出目录之外执行:仓库根目录为可复现开发设置了exclude-newer的 uv 策略(python/pyproject.tomlexclude-newer = "7 days"),会过滤掉新发布的 wheel。在源码检出内请改用下文"从源码构建"章节的make build-debug

当前的 wheel 目标为 Python 3.12–3.14。当你需要本地 Rust 改动、调试构建,或目标平台没有可用 wheel 时,请选择从源码构建。

稳定版 1.x wheel

省略--pre会安装最新的稳定版 1.x:

uv pip install nautilus_trader

1.x 安装无法运行本文档配套的示例代码。从 1.x 迁移到 2.x 的 API 差异详见仓库根目录的 MIGRATION_V2.md。

安装可视化等可选依赖(Extras)

需要基于 Plotly 的交互式绩效图表(tearsheets)与行情图时,安装visualizationextra:

uv pip install --pre "nautilus_trader[visualization]"

该 extra 在 python/pyproject.toml 的[project.optional-dependencies]中定义,具体包含pandas>=2.3.3,<4.0.0plotly>=7.0.0,<8.0.0kaleido>=1.3.0,<2.0.0simplejson>=4.1.2,<5.0.0四个依赖,且均设定了版本上限以保障 API 稳定性。

从 Nautech Systems 包索引安装

Nautech Systems 包索引(packages.nautechsystems.io)遵循 PEP-503 简单索引规范,同时托管nautilus_trader稳定版开发版二进制 wheel,方便用户在正式发布前测试最新功能。

稳定版 wheel

稳定版 wheel 与 PyPI 上的官方发布一一对应,采用标准版本号。与 PyPI 相同,该索引上的最新稳定版仍属 1.x 线,因此要安装 2.x wheel 仍需加--pre

安装最新稳定版:

uv pip install nautilus_trader --index-url=https://packages.nautechsystems.io/simple

提示:如果希望 uv 在索引不可用时自动回退到 PyPI,请改用--extra-index-url而不是--index-url

开发版 wheel(develop / nightly)

主包索引会从nightlydevelop两个分支持续发布开发版 wheel,让用户能提前测试新特性与修复。这一流程同时节省了构建算力,并提供了与 CI 管线中测试的二进制完全一致的产物,版本号遵循 PEP-440 规范:

  • develop分支 wheel 使用版本后缀.devYYYYMMDD+run
  • nightly分支 wheel 在基础版本已是预发布时使用.devYYYYMMDD,否则使用aYYYYMMDD

各平台开发版 wheel 的覆盖情况:

平台DevelopNightly
Linux (x86_64)
Linux (ARM64)-
macOS (ARM64)-
Windows (x86_64)-

警告:不建议在生产环境(如控制真实资金的实盘交易)使用开发版 wheel。

uv 默认安装最新稳定版;添加--pre标志后才会考虑包括开发版在内的预发布版本。安装最新可用的预发布版本(含开发版 wheel):

uv pip install nautilus_trader --pre --index-url=https://packages.nautechsystems.io/simple

同样地:安装后的导入名仍为nautilus_trader;请在源码检出之外执行该命令,以免仓库的exclude-newer策略过滤掉新发布的 wheel;需要本地 Rust 改动、调试构建或目标平台无 wheel 时改用源码构建。

查看可用版本

可通过命令行以编程方式列出索引上的全部可用版本:

curl -s https://packages.nautechsystems.io/simple/nautilus-trader/index.html | grep -oP '(?<=<a href=")[^"]+(?=")' | awk -F'#' '{print $1}' | sort

分支更新与保留策略

  • develop分支 wheel.devYYYYMMDD+run):每次合并提交都会持续构建并发布,仅保留最近一次构建
  • nightly分支 wheel.devYYYYMMDDaYYYYMMDD):每天在14:00 UTC自动合并develop分支时(若有变更)构建发布,每个平台仅保留最近 30 个发布日期的 wheel。

构建来源(Provenance)验证

项目发布的所有产物都带有 CI/CD 管线生成的加密证明(attestation):

  • Python wheel 与 sdist(PyPI、GitHub Releases、Nautech Systems 包索引):携带 SLSA 构建来源证明;
  • Docker 镜像ghcr.io/nautechsystems/nautilus_traderghcr.io/nautechsystems/jupyterlab):携带无密钥 cosign 签名以及 SPDX SBOM 证明。

两者均通过 Sigstore 签发,并绑定到特定 commit SHA。验证通过即可确认产物由官方 NautilusTrader GitHub Actions 工作流生成、且自发布后未被篡改。分步验证命令见仓库根目录的 SECURITY.md。验证 Python 产物需要 GitHub CLI(gh),验证 Docker 镜像需要cosigndevelopnightly分支的开发版 wheel 同样带有证明。

从源码构建

当需要本地 Rust 改动、调试构建或目标平台没有预编译 wheel 时,可通过 pip 从源码安装,前提是先安装pyproject.toml中指定的构建依赖。完整流程如下。

1. 安装 rustup

安装 Rust 工具链管理器 rustup:

curl https://sh.rustup.rs -sSf | sh
# 从 https://win.rustup.rs/x86_64 下载并安装 rustup-init.exe # 同时通过 Visual Studio 2022 Build Tools 安装 "Desktop development with C++"

验证:rustc --version

仓库通过 rust-toolchain.toml 将 Rust 工具链固定在channel = "1.98.1",保证所有贡献者与 CI 使用完全一致的编译器版本。

2. 启用 cargo

在当前的 shell 中启用cargo

source $HOME/.cargo/env
# 开启一个新的 PowerShell 会话

3. 安装 clang

安装 clang(LLVM 的 C 语言前端)。在 Linux 上这会同时安装 lld(LLVM 链接器),仓库已将其配置为 Rust 链接器以加速构建:

sudo apt-get install clang lld
# 1. 通过 Visual Studio Installer 添加 Clang: # Modify > C++ Clang tools for Windows (latest) > Modify # 2. 添加到 PATH: [System.Environment]::SetEnvironmentVariable('path', "C:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Tools\Llvm\x64\bin\;" + $env:Path,"User")

验证:clang --version。clang 是项目构建的默认编译器(Makefile 中CC ?= clangCXX ?= clang++),部分依赖(如ed25519-blake2b)强制要求 clang。

4. 安装 uv

curl -LsSf https://astral.sh/uv/install.sh | sh
irm https://astral.sh/uv/install.ps1 | iex

5. 克隆仓库并同步依赖

git clone --branch develop --depth 1 https://gitcode.com/GitHub_Trending/na/nautilus_trader cd nautilus_trader make sync
  • --depth 1仅获取最新一次提交,克隆更快更轻量。
  • 开发主机与 CI runner 镜像所需的全部工具版本都以仓库清单为准(单一版本来源),详见 docs/developer_guide/environment_setup.md。例如 Rust 版本来自 rust-toolchain.toml、Python 依赖与 uv 范围来自 python/pyproject.toml、精确解析来自python/uv.lock
  • make sync会校验本地 uv 版本是否符合python/pyproject.toml中的required-version范围,再执行uv sync --all-groups --all-extras --no-install-package nautilus-trader同步全部依赖(本包自身由 maturin 构建)。

6. 为开发安装 Cap'n Proto

如果你计划启用capnpRust 特性、重新生成序列化 schema 或从事序列化相关开发,需要安装 Cap'n Proto。在 Linux 或 macOS 上,使用仓库脚本安装.nautilus-engineering/tools.toml中固定的版本:

./scripts/install-capnp.sh

验证:capnp --version

注:Cap'n Proto 属于开发依赖,安装预编译 wheel 时并不需要。

7. 设置环境变量

uv 项目环境位于python/.venv(与python/pyproject.toml相邻)。请在python/目录下运行直接的 uv 项目命令,或在仓库根目录传入--project python

make sync之后、于 Bash 或 Zsh 中从仓库根目录运行以下命令(Linux 与 macOS 需要),为 PyO3 编译设置环境变量;Fish 命令见 docs/developer_guide/environment_setup.md:

# 为 PyO3 设置 Python 可执行文件路径 export PYO3_PYTHON="$PWD/python/.venv/bin/python" # 仅 Linux:设置 uv 托管 Python 运行时的库路径 PYTHON_LIB_DIR="$("$PYO3_PYTHON" -c 'import sysconfig; print(sysconfig.get_config_var("LIBDIR"))')" export LD_LIBRARY_PATH="$PYTHON_LIB_DIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" # 运行 Rust 测试所需(使用 uv 安装的 Python 时) export PYTHONHOME="$("$PYO3_PYTHON" -c 'import sys; print(sys.base_prefix)')"

各变量作用说明:

  • PYO3_PYTHON告诉 PyO3 使用哪个 Python 解释器,可避免不必要的重编译;每个 shell 都应指向本检出的python/.venv/bin/python(若此前有指向根目录.venv/bin/python的 export,请替换掉)。
  • LD_LIBRARY_PATH仅 Linux 需要,macOS 不需要。
  • PYTHONHOME在使用 uv 安装的 Python 运行make cargo-test必须设置,否则依赖 PyO3 的测试可能无法定位 Python 运行时。

8. 从源码构建 Python 包

该路径从python/目录构建 PyO3 包,并将其安装到python/.venv。当你的平台没有开发版 wheel、或需要本地 Rust 改动时使用。从仓库根目录执行:

make build-debug

该目标会:同步python/.venv→ 用 maturin 构建 Rust 扩展(Cargo 产物位于target/)→ 重新生成 Python 类型存根(stubs)。python/pyproject.toml的构建后端固定为maturin==1.15.0,maturin 配置中的manifest-path = "../crates/pyo3/Cargo.toml"指向 crates/pyo3 crate,module-name = "nautilus_trader._libnautilus"

构建完成后,用项目环境运行一个 Python 示例:

uv run --project python --no-sync python examples/live/lighter/data_tester.py

该脚本会连接 Lighter 测试网并开始流式接收行情数据,按 Ctrl+C 停止。示例源码见 examples/live/lighter/data_tester.py。更多直接命令与测试目标见 python/README.md。

从 GitHub Release 安装

需要从 GitHub 安装二进制 wheel 时,先进入最新 release 页面,下载与你操作系统及 Python 版本匹配的.whl文件,然后运行:

uv pip install <file-name>.whl

常见问题排查(Troubleshooting)

文档示例无法导入

典型报错:

ImportError: cannot import name 'OrderSide' from 'nautilus_trader.model' ImportError: cannot import name 'BacktestEngine' from 'nautilus_trader.backtest' TypeError: Struct types cannot define __init__

这些错误源于用 1.x 安装运行 2.x 文档示例。先检查当前安装的版本:

python -c "import nautilus_trader; print(nautilus_trader.__version__)"

如果输出以1.开头,说明解析器选中了稳定版线,请用--pre重装:

uv pip install -U --pre nautilus_trader

1.x 与 2.x 的 Python API 不可互换,迁移 1.x 应用时请参考 MIGRATION_V2.md。

uv 在仓库内解析到旧版本

仓库根目录为可复现开发设置了exclude-newer策略(python/pyproject.toml 中exclude-newer = "7 days"),会隐藏近期发布的 wheel。请在其他目录执行安装命令,或改用从源码构建。该冷却策略的作用是给社区留出时间发现并隔离被投毒的版本,其值支持 RFC 3339 时间戳(如"2026-03-30T00:00:00Z")、友好时长(如"7 days")或 ISO 8601 时长(如"P7D")。

找不到对应平台的 wheel

检查你的 Python 版本是否为 3.12–3.14,平台是否在本页顶部的支持列表内。在 Linux 上,ldd --version必须报告 glibc 2.35 或更新版本。否则请从源码构建。

版本管理与发布节奏

NautilusTrader 仍处于积极开发阶段:部分功能可能尚不完整,API 正趋于稳定但仍可能发生破坏性变更。项目会尽力在 release notes 中记录这些变更。官方目标为双周发布节奏,但实验性或较大型的功能可能导致延迟。使用 NautilusTrader 前请确认你能接受 API 演进带来的适配工作。

可选组件:Redis

仅在将 Redis 配置为缓存数据库或消息总线的后端时才需要安装 Redis。最低支持版本为6.2(因 streams 功能需要)。快速搭建推荐使用 Docker 容器,仓库的.docker目录提供了示例配置(见 .docker/docker-compose.yml,其中包含 postgres、redis、pgadmin 三个开发服务),也可以直接运行:

docker run -d --name redis -p 6379:6379 redis:latest

该命令会:

  • 若本地未下载则从 Docker Hub 拉取最新版 Redis;
  • 以分离模式(-d)运行容器;
  • 将容器命名为redis便于引用;
  • 将 Redis 暴露在默认端口 6379,使本机上的 NautilusTrader 可以访问。

容器管理:docker start redis启动、docker stop redis停止。可使用 Redis Insight 作为 GUI 可视化与调试 Redis 数据。

精度模式(Precision Mode)

NautilusTrader 的核心值类型(PriceQuantityMoney)支持两种精度模式,二者的内部位宽与最大十进制精度不同:

  • 高精度(High-precision):128 位整数,最多 16 位小数精度,值范围更大。
  • 标准精度(Standard-precision):64 位整数,最多 9 位小数精度,值范围更小。

注:官方 Python wheel 默认在所有受支持平台上以高精度(128 位)模式发布。对纯 Rust crate 而言,由于 Rust 通过软件模拟处理i128/u128,高精度可在所有平台(含 Windows)工作;默认是标准精度,除非显式启用high-precision特性。

性能权衡方面:标准精度在典型回测中约快 3–5%,但小数精度更低、可表示值范围更小(官方文档注明两种模式的性能基准对比尚在准备中,具体数据请以仓库后续发布的基准为准)。

构建配置

精度模式在编译期通过high-precisionRust 特性标志选择。Python 包在 maturin 构建特性中启用了该标志(见 python/pyproject.toml 的[tool.maturin] features列表,其中包含high-precisionextension-modulearrowredispostgres等),因此源码构建默认即为高精度。若需要标准精度(64 位)的 Python 构建,从 maturin 特性列表移除high-precision后照常构建:

make build-debug

Rust 特性标志

要在 Rust 中启用高精度(128 位)模式,在Cargo.toml中添加high-precision特性:

[dependencies] nautilus-core = { version = "*", features = ["high-precision"] }

从源码结构可以进一步印证该机制的传导关系:特性在 crates/model/Cargo.toml 中定义(high-precision = []),而defi特性因 DeFi 领域模型需要 18 位 wei 精度而隐式依赖high-precision;绝大多数交易所适配器(如 binance、bitmex、bybit、coinbase 等,见 crates/adapters/binance/Cargo.toml 等)也将high-precision设为默认特性并透传到nautilus-model。这也解释了为什么官方的预编译 wheel 默认就是高精度构建。更多值类型规范详见 docs/concepts/overview.md。

安装完成后的下一步

安装验证通过后,可参考 docs/getting_started/index.md 的引导继续推进:

  • 五分钟快速上手回测:运行 docs/getting_started/quickstart.py,使用合成数据完成第一个回测,无需任何数据下载与 catalog 配置;
  • 回测 API 两级抽象:低级 API 从BacktestEngine入手(见 docs/getting_started/backtest_low_level.py),高级 API 使用BacktestNode(见 docs/getting_started/backtest_high_level.py),后者面向生产工作流、更易过渡到实盘;高级 API 需要基于 Parquet 的数据 catalog,低级 API 支持内存数据但无实盘路径;
  • 实盘交易:参考 docs/how_to/configure_live_trading.md 与 docs/integrations/ 中受支持的交易所集成;
  • 免本地安装的 Docker 方案:拉取ghcr.io/nautechsystems/jupyterlab:nightly镜像(docker pull ghcr.io/nautechsystems/jupyterlab:nightly --platform linux/amd64)后运行docker run -p 8888:8888 ghcr.io/nautechsystems/jupyterlab:nightly,浏览器访问http://localhost:8888即可体验自带 Jupyter 服务器的完整环境(注意示例使用LoggerConfig(stdout_level=LogLevel.ERROR)以规避 Jupyter 的 stdout 速率限制);该镜像与 .docker/nautilus_trader.dockerfile 一样采用 digest 固定的多阶段构建以保证供应链安全。

【免费下载链接】nautilus_traderProduction-grade Rust-native trading engine with deterministic event-driven architecture项目地址: https://gitcode.com/GitHub_Trending/na/nautilus_trader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 8:37:00

ClaudeCode自动技能库:智能编程助手的核心机制与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 8:36:39

Mindustry安装教程:JDK 17环境下3步完成部署与运行

Mindustry安装教程&#xff1a;JDK 17环境下3步完成部署与运行 【免费下载链接】Mindustry The automation tower defense RTS 项目地址: https://gitcode.com/GitHub_Trending/min/Mindustry Mindustry是一个用Java编写的自动化塔防RTS开源项目&#xff0c;核心玩法是搭…

作者头像 李华
网站建设 2026/9/12 8:34:59

Google Pixel 10a评测:中端机皇的AI摄影与性能突破

1. Google Pixel 10a 产品概述Google Pixel 10a 作为 Pixel a 系列的最新成员&#xff0c;延续了该系列"高性价比旗舰体验"的核心定位。这款设备在保持亲民价格的同时&#xff0c;通过多项硬件升级重新定义了中端机的标准。最引人注目的是其全新设计的平整后盖&#…

作者头像 李华
网站建设 2026/9/12 8:34:36

Vibe-Trading Wiki 静态站点架构与 AI-Agent 流量分析实战指南

Vibe-Trading Wiki 静态站点架构与 AI-Agent 流量分析实战指南 【免费下载链接】Vibe-Trading "Vibe-Trading: Your Personal Trading Agent" 项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading 本篇技术指南围绕 Vibe-Trading 官方文档站点&am…

作者头像 李华