Qiskit/rustworkx

GitHub: Qiskit/rustworkx

基于 Rust 高性能实现的 Python 图计算库,提供快速图数据结构与算法支持,适合替代 NetworkX 处理大规模图分析。

Stars: 1653 | Forks: 206

# rustworkx [![许可证](https://img.shields.io/github/license/Qiskit/rustworkx.svg?style=popout-square)](https://opensource.org/licenses/Apache-2.0) ![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/bbf5097290071242.svg) [![构建状态](https://img.shields.io/travis/com/Qiskit/rustworkx/main.svg?style=popout-square)](https://travis-ci.com/Qiskit/rustworkx) [![](https://img.shields.io/github/release/Qiskit/rustworkx.svg?style=popout-square)](https://github.com/Qiskit/rustworkx/releases) [![](https://img.shields.io/pypi/dm/rustworkx.svg?style=popout-square)](https://pypi.org/project/rustworkx/) [![覆盖率状态](https://coveralls.io/repos/github/Qiskit/rustworkx/badge.svg?branch=main)](https://coveralls.io/github/Qiskit/rustworkx?branch=main) [![最低 rustc 版本 1.85](https://img.shields.io/badge/rustc-1.85+-blue.svg)](https://rust-lang.github.io/rfcs/2495-min-rust-version.html) [![DOI](https://joss.theoj.org/papers/10.21105/joss.03968/status.svg)](https://doi.org/10.21105/joss.03968) [![arXiv](https://img.shields.io/badge/arXiv-2110.15221-b31b1b.svg)](https://arxiv.org/abs/2110.15221) [![Zenodo](https://img.shields.io/badge/Zenodo-10.5281%2Fzenodo.5879859-blue)](https://doi.org/10.5281/zenodo.5879859) - 您可以在以下网址查看完整的渲染文档: 一个用 Rust 编写的高性能、通用 Python 图库。 ## 使用方法 安装完成后,只需导入 `rustworkx` 即可。 所有的图类和顶级函数都可以通过单次导入访问。 为了说明这一点,以下示例计算了无向图中两个节点 `A` 和 `C` 之间的最短路径。 ``` import rustworkx # Rustworkx 的无向图类型。 graph = rustworkx.PyGraph() # 每次调用 add node 时,它都会返回一个新的 node index a = graph.add_node("A") b = graph.add_node("B") c = graph.add_node("C") # add_edges_from 接受 node index 和权重的元组, # 并返回 edge index graph.add_edges_from([(a, b, 1.5), (a, c, 5.0), (b, c, 2.5)]) # 返回路径 A -> B -> C rustworkx.dijkstra_shortest_paths(graph, a, c, weight_fn=float) ``` ## 安装 rustworkx rustworkx 已发布在 [PyPI](https://pypi.org/project/rustworkx/) 上,因此在 x86\_64、i686、ppc64le、s390x 和 aarch64 架构的 Linux 系统、Mac OSX 的 x86\_64 架构,以及 32 位和 64 位 Windows 系统上,安装只需运行: ``` pip install rustworkx ``` 这将会把预编译版本的 rustworkx 安装到您的 Python 环境中。 ### 在没有预编译二进制文件的平台上安装 如果没有为您的系统发布预编译的二进制文件,您将必须从源代码构建该软件包。但是,要从已发布的源代码包构建该软件包,您需要安装 Rust >= 1.85(以及通常包含在 rust 中的 [cargo](https://doc.rust-lang.org/cargo/))。您可以使用 [rustup](https://rustup.rs/)(一个跨平台的 Rust 安装程序)来简化此过程,或者依赖[其他安装方法](https://forge.rust-lang.org/infra/other-installation-methods.html)。 源代码包同样发布在 PyPI 上,因此您依然可以运行上述 `pip` 命令进行安装。一旦您正确安装了 Rust,运行: ``` pip install rustworkx ``` 将从源代码包为您的本地系统构建 rustworkx 并进行安装,其效果与有预编译二进制文件时一样。 ### 可选依赖 如果您计划使用 `rustworkx.visualization` 模块,您需要安装可选依赖才能使用其中的函数。基于 matplotlib 的绘图函数 `rustworkx.visualization.mpl_draw` 需要安装 [matplotlib](https://matplotlib.org/) 库。您可以通过 `pip install matplotlib` 进行安装,或者在安装 rustworkx 时使用 `pip install 'rustworkx[mpl]'`。如果您打算使用基于 graphviz 的绘图函数 `rustworkx.visualization.graphviz_drawer`,首先您需要安装 graphviz,相关说明可以在这里找到: https://graphviz.org/download/#executable-packages。然后 您需要安装 [pillow](https://python-pillow.github.io/) Python 库。 这可以通过 `pip install pillow` 完成,或者在安装 rustworkx 时使用 `pip install 'rustworkx[graphviz]'`。 如果您想在安装 rustworkx 时安装所有可选的 Python 依赖,可以使用 `pip install 'rustworkx[all]'`。 ### Conda 生态系统 社区支持的二进制文件已发布到 [conda-forge](https://anaconda.org/conda-forge/rustworkx)。虽然这些是非官方的,但它们对于 `conda` 生态系统(包括 `mamba`、`micromamba` 和 `pixi`)的用户会非常有帮助。只需运行以下命令即可安装: ``` conda install -c conda-forge rustworkx ``` ## 作者与引用 rustworkx 是在不同层面为项目做出贡献的[许多人](https://github.com/Qiskit/rustworkx/graphs/contributors)的共同作品。如果您在研究中使用了 rustworkx,请按照随附的 [BibTeX 文件](CITATION.bib)引用我们的[论文](https://doi.org/10.21105/joss.03968)。 ## 从源代码构建 从源代码构建 rustworkx 的第一步是使用以下命令在本地克隆它: ``` git clone https://github.com/Qiskit/rustworkx.git ``` rustworkx 使用 [PyO3](https://github.com/pyo3/pyo3) 和 [setuptools-rust](https://github.com/PyO3/setuptools-rust) 来构建 Python 接口,这使得能够使用标准的 Python 工具进行工作。因此,假设您已经安装了 Rust,您可以使用 `pip` 轻松地将 rustworkx 安装到您的 Python 环境中。一旦您拥有了仓库的本地克隆,请将当前工作目录切换到仓库的根目录。然后,您可以使用以下命令将 rustworkx 安装到您的 Python 环境中: ``` pip install . ``` 假设您的当前工作目录仍然是仓库的根目录。 否则您可以运行: ``` pip install $PATH_TO_REPO_ROOT ``` 这将以相同的方式安装它。然后 rustworkx 就安装在您的本地 Python 环境中了。这样做时有两点需要注意,首先,如果您使用此方法尝试从仓库根目录运行 Python,它将不会如您预期的那样工作。由于用于构建包的本地 Python 包垫片,仓库根目录中存在名称冲突。只需在仓库根目录之外运行使用 rustworkx 的 Python 脚本或程序即可。第二个问题是,您对 Rust 代码所做的任何本地更改都不会在您的 Python 环境中实时反映出来,您需要通过重新运行 `pip install` 来重新编译 rustworkx,以便在您的 Python 环境中反映任何更改。 ### 开发模式 如果您想在开发更改时以调试模式构建 rustworkx 并使用交互式调试器,您可以将 `SETUPTOOLS_RUST_CARGO_PROFILE="dev"` 设置为环境变量,以便在开发模式下构建和安装 rustworkx。 这将在运行 `pip install` 时不进行优化并包含 debuginfo 来构建 rustworkx。这对于调试非常方便。 ## 项目历史 Rustworkx 最初被称为 retworkx,最初创建时是为了替代 [Qiskit](https://www.ibm.com/quantum/qiskit) 之前(以及当前)的 NetworkX 用法(因此得名)。该项目最初启动是为了构建一个更快的有向图,用作 [qiskit](https://github.com/Qiskit/qiskit/) 转换器中心 DAG 的底层数据结构。然而,自最初引入以来,该项目已经大幅发展,现在涵盖了包括 Qiskit 在内的所有需要处理图的应用。
标签:PyGraph, Python, Qiskit, Rust, 可视化界面, 图算法, 图论, 开源库, 搜索引擎爬虫, 数据结构, 无后门, 无向图, 最短路径, 有向图, 流量捕获, 科学计算, 系统分析, 网络分析, 网络拓扑, 网络流量审计, 跨语言调用, 逆向工具, 通知系统, 高性能计算