入门指南#

rustworkx 是一个通用图形库,适用于 Python,采用 Rust 编写,以充分利用 Rust 提供的性能和安全特性。它旨在为任何 Python 应用程序提供一个高性能的通用图形库。

安装Rustworkx#

rustworkx发布在pypi上,因此在x86_64、i686、ppc64le、s390x和aarch64 Linux系统、macOS上的x86_64和arm64、以及32位和64位Windows上 安装只需运行:

pip install rustworkx

这将在你的Python环境中安装一个预编译版本的rustworkx。

在无预编译二进制文件的平台上安装#

如果您的系统没有预编译好的二进制文件发布,您将需要从源码构建该软件包。但是,为了能够从已发布源码包进行构建,您需要安装 Rust >= 1.64(通常也包含 cargo,它是 rust 的一部分)。您可以使用rustup(一个跨平台的 rust 安装器)来简化这个过程,或者依赖other installation methods。 源码包同样在 PyPI 上发布,因此您仍可以运行 pip 来安装它。在正确安装 Rust 后,运行:

pip install rustworkx

将会从源码包为您的本地系统构建 rustworkx 并安装它,就像有预构建二进制文件可用时一样。

注意

要从源代码构建,你需要确保已安装 pip >=19.0.0(支持 PEP-517),或者在运行 pip install rustworkx 之前手动安装 setuptools-rust。如果你遇到关于 setuptools-rust 未找到的错误,应该使用 pip install -U pip 升级 pip,或者手动安装 setuptools-rustpip install setuptools-rust 并重试。

平台支持#

Rustworkx 致力于支持尽可能多的平台,但由于可用测试资源和平台可用性的限制,并非所有平台都能获得支持。rustworkx 的平台支持分为4个层级,每个层级具有不同级别的支持。对于这些之外的平台,rustworkx 可能仍然可以安装,但未经测试,您需要 Rust 编译器并必须从源代码构建 rustworkx (可能还需要构建 Numpy)。

平台支持#

操作系统

CPU架构

支持层级

备注

Linux

x86_64

Tier 1

兼容manylinux 2014打包规范的发行版

Linux

aarch64

Tier 1

manylinux 2014打包规范兼容的发行版

Linux

i686

Tier 4

manylinux 2014打包规范兼容的发行版

Linux

pp64le

Tier 4

兼容 manylinux 2014 打包规范的发行版

Linux

s390x

第4级

manylinux 2014打包规范兼容的发行版

Linux (musl)

x86_64

Tier 2

Linux (musl)

aarch64

Tier 2

macOS (10.12 或更新版本)

x86_64

Tier 1

macOS (11 或更新版本)

arm64

Tier 1 [1]

Windows 64位

x86_64

Tier 1

Windows 32位

i686 或 x86_64

第4级

Pyodide

WASM (Emscripten)

实验性级别

第1层级#

Tier 1 支持平台在上游开发过程中经过全面测试,以确保任何提议的更改都能正确运行。预编译二进制文件作为发布流程的一部分被构建、测试并发布到 PyPI。这些平台预计只需具备正常运行的 Python 环境即可安装。

层级 2#

第二级平台在上游开发流程中不进行测试。 然而,作为发布流程的一部分,预编译二进制文件会被构建、测试并发布到PyPI, 这些软件包预计只需在功能正常的Python环境中即可安装。

第三层#

Tier 3 平台在上游开发过程中未经测试。 预编译二进制文件是作为发布流程的一部分构建、测试并发布到 PyPI 的。 然而,它们可能无法仅凭正常运行的 Python 环境安装,你可能需要在安装过程中从源代码构建 Numpy,这要求具备 C/C++ 编译器。

第4级#

第4级平台在上游不被测试作为开发流程的一部分。 预编译的二进制文件作为发布流程的一部分被打包并发布到PyPI,完全不经过测试。 这些平台可能无法通过仅有一个正常运行的Python环境安装,并可能在安装过程中需要C/C++编译器或额外的程序来从源码构建依赖。 对这些平台的支持仅限于尽力而为。

实验性层级#

实验性平台层级的平台并未作为开发流程的一部分进行上游测试。 预编译的二进制文件由外部社区在独立的仓库中构建。并非所有的 rustworkx 都可能为此层级的平台编译,并且功能可能会被移除。 通常,此层级的平台使用 Rust 编译器中不稳定的功能,并可能随时崩溃。 对这些平台的支持仅为最佳努力提供。

目前,该层级中唯一的平台是Pyodide,这是一个能够在浏览器和Node.js环境中运行的Python移植版本。

使用 rustworkx#

安装好 rustworkx 后,你可以通过导入 rustworkx 来使用它。所有函数和图类都位于包的根目录下。例如,计算 A 和 C 之间的最短路径将是:

import rustworkx as rx

graph = rx.PyGraph()

# Each time add node is called, it returns a new node index
a = graph.add_node("A")
b = graph.add_node("B")
c = graph.add_node("C")

# add_edges_from takes tuples of node indices and weights,
# and returns edge indices
graph.add_edges_from([(a, b, 1.5), (a, c, 5.0), (b, c, 2.5)])

# Returns the path A -> B -> C
rx.dijkstra_shortest_paths(graph, a, c, weight_fn=float)

你可以参考Introduction to rustworkx了解更多关于开始使用rustworkx的详细信息.