M1 Mac Docker环境安装nautilus_trader失败:编译datafusion报错
解决M1 Mac Docker容器中安装nautilus_trader的编译SIGKILL问题
核心原因
编译parquet和datafusion-physical-expr这类Rust依赖需要大量内存,而M1 Mac的Docker默认内存配额较低,加上python:3.11-slim镜像的精简特性,容易触发内存耗尽导致进程被SIGKILL终止。
解决方案
调整Docker容器内存配额
- 打开Docker Desktop,进入
Settings > Resources > Advanced,将内存分配调高至至少4GB(推荐8GB),重启Docker生效。 - 如果使用VS Code Dev Container,可在
.devcontainer/devcontainer.json中添加配置,强制指定容器内存:"runArgs": ["--memory=8g"]
- 打开Docker Desktop,进入
更换/优化基础镜像
放弃python:3.11-slim,改用完整的python:3.11-bullseye镜像,它包含更多编译所需的系统依赖,减少手动补全的麻烦。如果坚持用slim镜像,需额外安装编译依赖:apt-get update && apt-get install -y build-essential pkg-config libssl-dev libz-dev使用预编译wheel跳过编译
尝试强制使用预编译包安装,避免本地编译:pip install --only-binary :all: -U nautilus_trader注:需确认nautilus_trader提供了适配aarch64架构的预编译wheel。
限制Rust编译的资源占用
通过环境变量降低编译时的内存消耗:# 关闭调试信息生成,减少内存占用 export RUSTFLAGS="-C debuginfo=0" # 单线程编译,避免多线程内存过载 export CARGO_BUILD_JOBS=1 pip install -U nautilus_trader
内容的提问来源于stack exchange,提问作者Simon Leiner
相关产品推荐
相关产品推荐

