用Rust实现的Python图库
项目描述
retworkx
retworkx是rustworkx
的已废弃的包名。如果您正在使用retworkx
包(无论是作为依赖项还是导入),则应将其更新为使用rustworkx。将来,仅支持rustworkx
名称。
rustworkx
- 您可以在以下位置查看完整的渲染文档: https://www.rustworkx.org/
Python的一个高性能、通用图库,用Rust编写。
用法
安装后,只需导入rustworkx
。所有图类和顶级函数都可以通过单个导入访问。为了说明这一点,以下示例计算了无向图中节点A
和C
之间的最短路径。
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,有关说明请参阅此处:https://graphviz.cpp.org.cn/download/#executable-packages。然后您需要安装 pillow Python 库。这可以通过 pip install pillow
或在安装 rustworkx 时使用 pip install 'rustworkx[graphviz]'
来完成。
如果您希望在安装 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 使用 PyO3 和 setuptools-rust 来构建 Python 接口,这使得可以使用标准的 Python 工具进行工作。因此,假设你已经安装了 rust,你可以使用 pip
轻松地将 rustworkx 安装到你的 Python 环境中。一旦你有了仓库的本地副本,将你的当前工作目录更改到仓库的根目录。然后,你可以使用以下命令将 rustworkx 安装到你的 Python 环境中:
pip install .
假设你的当前工作目录仍然是仓库的根目录。如果不是,你可以运行
pip install $PATH_TO_REPO_ROOT
这将以相同的方式安装它。然后 rustworkx 就已经安装在你的本地 Python 环境中了。不过,在此过程中有两个需要注意的事项:首先,如果你尝试使用这种方法从仓库根目录运行 Python,它将不会像你预期的那样工作。由于构建该软件包时使用的本地 Python 包包装器,仓库根目录中存在名称冲突。只需在仓库根目录之外运行你的 rustworkx 脚本或程序即可。第二个问题是,你对你对 rust 代码所做的任何本地更改都不会实时反映在你的 Python 环境中,你需要重新运行 pip install
以使更改反映在你的 Python 环境中。
开发模式
如果你想以调试模式构建 rustworkx 并在更改时使用交互式调试器,可以使用 python setup.py develop
命令以开发模式构建和安装 rustworkx。这将构建没有优化并且包含调试信息的 rustworkx,这对于调试非常有用。请注意,以这种方式安装 rustworkx 会比使用 pip install
慢得多,并且仅适用于调试/开发。
[!TIP] 值得注意的是,
pip install -e
是不可用的,因为它会将 Python 包包装器链接到你的 Python 环境中,但不会构建 rustworkx 二进制文件。如果你想以调试模式构建 rustworkx,你必须使用python setup.py develop
。
项目历史
rustworkx 最初被称为 retworkx,最初是为了替换 Qiskit 的之前(以及当前的)NetworkX 使用(因此得名)。该项目最初是为了构建一个更快的有向图,用作 qiskit 转换器的 DAG 的底层数据结构。然而,自其最初引入以来,该项目已经大幅增长,现在涵盖了所有需要与图一起工作的应用程序,包括 Qiskit。
项目细节
下载文件
下载适用于你的平台的文件。如果你不确定要选择哪一个,了解更多关于 安装软件包 的信息。