---
title: "安装"
description: "安装包含 Light / Heavy 的 Python wheel，或从源码构建公开算法与数值执行功能。"
eyebrow: "开始使用"
---

## 使用前的许可说明 {#license}

公司有权授权的源码适用 Arclight 非商业源码可用许可证 1.0，禁止商用和闭源集成，不是 OSI 认可的开源许可证。商业使用需另行授权。Light / Heavy 动态库单独许可，源码许可证不授权其分发或使用。第三方依赖及此前已按 MIT / Apache 授出的版本保留各自权利。详见[许可证与使用范围](/docs/home#license)及 [ArcTN 仓库](https://github.com/Quill-ArcLight/ArcTN#license)中的许可正文和第三方及历史授权说明。

## 环境要求 {#requirements}

| 组件 | 最低要求 | 说明 |
| --- | --- | --- |
| Python 安装包 | Python 3.9 或更高版本 · NumPy 1.23 或更高版本 | wheel 必须与 Python 版本、操作系统和 CPU 架构匹配；安装不需要 Rust |
| Rust 源码构建 | Rust 1.82 | 公开算法与 native CPU 执行 |
| Python 源码构建 | Rust 1.83 · Python 3.9 | 通过 PyO3 构建公开扩展 |
| MPI | 系统 MPI + Cargo feature `mpi` | 启用 `mpi` feature 并构建 `tnmpi` 时需要 |

## 安装 Python 包 {#python}

以下完整 wheel 安装步骤仅适用于已取得相应授权的内部安装包；公开源码发行及从该源码构建的 wheel 不附带 Light / Heavy 引擎。拿到包含这些编译库的已授权安装包后，在虚拟环境中安装，将下面的路径替换为实际文件路径：

```bash
python -m venv .venv
source .venv/bin/activate
python -m pip install /path/to/arctn-版本与平台标记.whl
```

Windows 的激活命令是 `.venv\Scripts\activate`。wheel 文件名中的 Python 版本和平台标记由构建过程生成，不要手动修改文件名。

完整 wheel 已包含 Rust CPU 执行器和 Light / Heavy 编译库，导入 `arctn` 时会自动找到包内的编译库，无需设置库文件路径。安装后可以直接运行[快速开始](/docs/quick-start)。当前完整安装包仅供内部使用，尚未提供公开下载或 PyPI 发行。

在 Quimb 中使用 ArcTN 时，额外安装前端与树接口依赖：

```bash
python -m pip install quimb cotengra opt_einsum
```

CuPy、PyTorch、JAX 等数组库按所需后端另行安装。

## 从源码构建 Rust crate {#rust}

```bash
git clone https://github.com/Quill-ArcLight/arctn-public.git
cd arctn-public
cargo build --release --locked
cargo test --locked --test correctness
```

公开源码包含独立寻路算法、切片和数值执行，但不包含 Light / Heavy 的实现或编译库。仓库目前为私有，克隆需要访问权限。普通单机执行不需要 MPI；`--locked` 使用仓库中的 `Cargo.lock`。

## 从源码构建 Python wheel {#python-source}

```bash
cd arctn-public/pybind
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install "maturin>=1.9.3,<2.0"
python -m maturin build --release --locked --out target/wheels
python -m pip install --force-reinstall target/wheels/arctn-*.whl
python -c "import arctn; print(arctn.__version__)"
```

从公开源码生成的 wheel 不附带 Light / Heavy 编译库。执行已有收缩序与网络化简等功能可以独立使用；调用 Light / Heavy 时，还需配置单独提供的兼容编译库。

## 单独配置 Light / Heavy 编译库 {#engine}

仅在使用源码构建版本、Rust 接口或命令行工具时需要这一步。Linux 示例：

```bash
export ARCTN_ENGINE_LIBRARY=/absolute/path/to/libarctn_engine.so
```

macOS 使用 `libarctn_engine.dylib`，Windows 使用 `arctn_engine.dll`。编译库必须匹配操作系统、CPU 架构与接口版本。显式设置 `ARCTN_ENGINE_LIBRARY` 会优先于 Python 包内的编译库；路径错误会报错，不会自动换用另一份库。

Light / Heavy 动态库单独许可，Arclight 非商业源码可用许可证 1.0 不授权其分发或使用。取得相应授权和兼容编译库后，普通使用者不需要编译它，也不需要修改 `preset="light"` 或 `preset="heavy"` 的调用方式。

## 启用 MPI {#mpi}

```bash
cargo build --release --locked --features mpi --bin tnmpi
mpirun -n 4 target/release/tnmpi --help
```

`tnmpi` 读取已有收缩序和切片集合，执行切片收缩。`--dtype` 支持 `f32`、`f64`、`complex64` 和 `complex128`，默认 `f64`。用法见 [MPI 执行](/docs/mpi)。
