跳转到主要内容

使用Rust实现的Python图库

项目描述

rustworkx

License Build Status Build Status Coverage Status Minimum rustc 1.70 DOI arXiv Zenodo

这是一个为Python编写的、高性能、通用的图库,使用Rust语言实现。

使用方法

安装完成后,只需导入rustworkx。所有图类和顶层函数都可以通过单个导入访问。为了说明这一点,以下示例计算一个无向图中节点AC之间的最短路径。

import rustworkx

# Rustworkx's undirected graph type.
graph = rustworkx.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
rustworkx.dijkstra_shortest_paths(graph, a, c, weight_fn=float)

安装rustworkx

rustworkx发布在PyPI上,因此对于x86_64、i686、ppc64le、s390x和aarch64 Linux系统、Mac OSX上的x86_64以及32位和64位Windows,安装方法简单,只需运行

pip install rustworkx

这将安装预编译的rustworkx版本到您的Python环境中。

在没有预编译二进制的平台上安装

如果您的系统没有发布预编译的二进制文件,您将不得不从源代码构建此包。但是,为了能够从发布的源代码包中构建包,您需要安装Rust >= 1.70(以及通常与rust一起包含的cargo)。您可以使用rustup(Rust的跨平台安装程序)来简化这个过程,或者依靠其他安装方法。源代码包也发布在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,或者手动使用pip install setuptools-rust安装setuptools-rust并重试。

可选依赖

如果您计划使用rustworkx.visualization模块,您需要安装可选依赖项以使用这些功能。基于matplotlib的绘图函数rustworkx.visualization.mpl_draw需要安装matplotlib库。这可以通过pip install matplotlib或使用pip install 'rustworkx[mpl]'在安装rustworkx时完成。如果您打算使用基于graphviz的绘图函数rustworkx.visualization.graphviz_drawer,首先您需要安装graphviz,有关说明请参阅此处。然后您需要安装Python库pillow。这可以通过pip install pillow或使用pip install 'rustworkx[graphviz]'在安装rustworkx时完成。

如果您想在安装rustworkx时安装所有可选Python依赖项,可以使用pip install 'rustworkx[all]'来完成此操作。

作者和引用

rustworkx是由许多人共同完成的,他们在不同层面上为项目做出贡献。如果您在研究中使用了rustworkx,请按照所附BibTeX文件中的说明引用我们的论文

社区

除了GitHub互动(如打开问题)之外,还有两个地方可以与其他rustworkx用户和开发者交流。第一个是Qiskit工作空间中的公共Slack频道#rustworkx。您可以通过这里加入Qiskit Slack工作空间。此外,还有一个在OFTC IRC网络上的#rustworkx频道。

从源代码构建

从源代码构建rustworkx的第一步是使用

git clone https://github.com/Qiskit/rustworkx.git

rustworkx使用PyO3setuptools-rust构建Python接口,这允许使用标准的Python工具进行工作。因此,假设您已安装rust,您可以使用pip轻松地将rustworkx安装到Python环境中。一旦您有了repo的本地克隆,将您的当前工作目录切换到repo的根目录。然后,您可以使用以下命令将rustworkx安装到您的Python环境中

pip install .

假设您的当前工作目录仍然是repo的根目录。如果不是,您可以使用以下命令运行

pip install $PATH_TO_REPO_ROOT

将以相同的方式安装。然后,rustworkx将被安装到您的本地Python环境中。不过,在进行此操作时有两个需要注意的事项,首先,如果您尝试使用此方法从存储库根目录运行Python,它将不会按预期工作。由于在构建包时使用了本地的Python包shim,因此在存储库根目录中存在名称冲突。请仅在存储库根目录外使用rustworkx运行您的Python脚本或程序。第二个问题是,您对rust代码所做的任何本地更改都不会在您的Python环境中实时反映出来,您需要通过重新运行pip install来重新编译rustworkx,以便任何更改都能在Python环境中反映。

开发模式

如果您想以调试模式构建rustworkx并在修改时使用交互式调试器,可以使用python setup.py develop来以开发模式构建和安装rustworkx。这将构建不带优化的rustworkx,并包含调试信息,这在调试时很有用。请注意,以这种方式安装rustworkx将比使用pip install慢得多,并且仅应用于调试/开发。

[!TIP] 注意,pip install -e不起作用,因为它会将Python打包shim链接到您的Python环境,但不会构建rustworkx的二进制文件。如果您想以调试模式构建rustworkx,必须使用python setup.py develop

项目历史

Rustworkx最初被称为retworkx,最初是为了替代Qiskit之前(和当前)的NetworkX使用(因此得名)。该项目最初是为了构建一个更快的有向图,用作qiskit编译器中心的DAG的底层数据结构。然而,自从它的最初引入以来,该项目已经大幅增长,现在涵盖了所有需要与图一起工作的应用程序,包括Qiskit。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

rustworkx-0.15.1.tar.gz (342.2 kB 查看哈希)

上传时间

构建分发

rustworkx-0.15.1-cp38-abi3-win_amd64.whl (1.8 MB 查看哈希)

上传时间 CPython 3.8+ Windows x86-64

rustworkx-0.15.1-cp38-abi3-win32.whl (1.7 MB 查看哈希)

上传时间 CPython 3.8+ Windows x86

rustworkx-0.15.1-cp38-abi3-musllinux_1_1_x86_64.whl (2.0 MB 查看哈希)

上传时间 CPython 3.8+ musllinux: musl 1.1+ x86-64

rustworkx-0.15.1-cp38-abi3-musllinux_1_1_aarch64.whl (1.9 MB 查看哈希值)

上传时间: CPython 3.8+ musllinux: musl 1.1+ ARM64

rustworkx-0.15.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB 查看哈希值)

上传时间: CPython 3.8+ manylinux: glibc 2.17+ x86-64

rustworkx-0.15.1-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.6 MB 查看哈希值)

上传时间: CPython 3.8+ manylinux: glibc 2.17+ s390x

rustworkx-0.15.1-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.0 MB 查看哈希值)

上传时间: CPython 3.8+ manylinux: glibc 2.17+ ppc64le

rustworkx-0.15.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB 查看哈希值)

上传时间: CPython 3.8+ manylinux: glibc 2.17+ ARM64

rustworkx-0.15.1-cp38-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl (2.0 MB 查看哈希值)

上传时间: CPython 3.8+ manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

rustworkx-0.15.1-cp38-abi3-macosx_11_0_arm64.whl (1.7 MB 查看哈希值)

上传时间: CPython 3.8+ macOS 11.0+ ARM64

rustworkx-0.15.1-cp38-abi3-macosx_10_12_x86_64.whl (1.9 MB 查看哈希值)

上传时间: CPython 3.8+ macOS 10.12+ x86-64

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面