入门指南#
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-rust:pip install setuptools-rust 并重试。
平台支持#
Rustworkx 致力于支持尽可能多的平台,但由于可用测试资源和平台可用性的限制,并非所有平台都能获得支持。rustworkx 的平台支持分为4个层级,每个层级具有不同级别的支持。对于这些之外的平台,rustworkx 可能仍然可以安装,但未经测试,您需要 Rust 编译器并必须从源代码构建 rustworkx (可能还需要构建 Numpy)。
操作系统 |
CPU架构 |
支持层级 |
备注 |
|---|---|---|---|
Linux |
x86_64 |
兼容manylinux 2014打包规范的发行版 |
|
Linux |
aarch64 |
与manylinux 2014打包规范兼容的发行版 |
|
Linux |
i686 |
与manylinux 2014打包规范兼容的发行版 |
|
Linux |
pp64le |
兼容 manylinux 2014 打包规范的发行版 |
|
Linux |
s390x |
与manylinux 2014打包规范兼容的发行版 |
|
Linux (musl) |
x86_64 |
||
Linux (musl) |
aarch64 |
||
macOS (10.12 或更新版本) |
x86_64 |
||
macOS (11 或更新版本) |
arm64 |
||
Windows 64位 |
x86_64 |
||
Windows 32位 |
i686 或 x86_64 |
||
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的详细信息.