使用Rust实现的Python图库
项目描述
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,有关说明请参阅此处。然后您需要安装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使用PyO3和setuptools-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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0e0cc86599f979285b2ab9c357276f3272f3fcb3b2df5651a6bf9704c570d4c1 |
|
MD5 | 7643606d793f86c3444b654babb6d6b0 |
|
BLAKE2b-256 | 5e071af3ead27f1da113a60dc6735c761da6fc2e2db4cfc414bbcd03a989ccee |
rustworkx-0.15.1-cp38-abi3-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 89077382633e918d2392772f53b9d6d30eee51eb536f8d38ee195c212b2f0427 |
|
MD5 | 893ca6478ebef0f4ec751bfa24a91dbe |
|
BLAKE2b-256 | 9cc650f5736f5dac1709c6c8b6ac3470f466fd793dd25c081923942caf13051f |
哈希值 用于 rustworkx-0.15.1-cp38-abi3-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ce53f173fed16e1d51d9df9f23475a16c981b03bf1a412d991c75a70db6b1dc1 |
|
MD5 | 719f2d57ff6e8902a8000eab1d85f8ca |
|
BLAKE2b-256 | 6566daf6fffadb749574f78cd70919e598371d40484993ed005ed5efbef28b4e |
哈希值 用于 rustworkx-0.15.1-cp38-abi3-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7834ab34748db6214ec3b3836b996b23882dc83184234e6d346d6bb85fd58ae5 |
|
MD5 | fd79bf838be2ea7a50efef2396095cae |
|
BLAKE2b-256 | c6fe1e9a8a29c21080155b7422011a3c472aa45dbb3b8bb6f610958eb906a713 |
哈希值 用于 rustworkx-0.15.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e5f4156f46fa03177c9b0580450eab87786063495d48b457762a5bdd20c55e2 |
|
MD5 | 1b2f065a0fe1c1cb35525201d6cd98ff |
|
BLAKE2b-256 | cba0af448af28514e82f36e7431bc88e933ad043e5a95a7985bd9458a05877c6 |
哈希值 用于 rustworkx-0.15.1-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 241c502532e348ba89200823326dba30de4df4b886cb2fd5a140b359ff124bb3 |
|
MD5 | 85934475447f576614296ca64c02fba9 |
|
BLAKE2b-256 | 1588a3710209f647d89358c81b5974aee48b1ab361fd016dcae81824e29ee645 |
哈希值 用于 rustworkx-0.15.1-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a2c97a56ff8a0f6c273a83e26e627c72207442b4252aa550acad0bff42caac40 |
|
MD5 | 946923aca9a61af3ceae64772f2ae114 |
|
BLAKE2b-256 | b32a03e6ff45cb772d249d4bf2d433a2acd2ec857615b3c1d44f0fa49e13aa63 |
哈希值 用于 rustworkx-0.15.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8b903edec1d803704b499959f9d6f6119cdda63b9b64194a4b4307e506b112f0 |
|
MD5 | 1477ae2f18bb61297c69b688620482ae |
|
BLAKE2b-256 | 7f3c23304cf86c4af6014884bde046073105ace6250b6a0914c1090f2643d03c |
哈希值 用于 rustworkx-0.15.1-cp38-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6ac68ae2515ece22ba3ef56f3d16ad6bf707955f650d623190b2e7d706c6dc92 |
|
MD5 | d49044ef8dde92338fafb51f88c1ed40 |
|
BLAKE2b-256 | 2f2b494982ecc4618796aacb8069bc176d895cec4bf1ac8dd0b1d69657d920c4 |
哈希值 用于 rustworkx-0.15.1-cp38-abi3-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cb518f5649e62d753e29ca1e57290c8f58adbebcd154dc3159f4a36ebfa1e2b7 |
|
MD5 | 453b53109f8a81938ac772020ef6a93f |
|
BLAKE2b-256 | 031195350c7eeade2e61a736f1ca956ee04acb920b7b080ff0c058c40cc7bbf3 |
哈希值 用于 rustworkx-0.15.1-cp38-abi3-macosx_10_12_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6cd4496d3298cd3205c03545e48cc37d21e0455d57752af801d3fb250452d590 |
|
MD5 | e03f61381b492bc206056966e80886b0 |
|
BLAKE2b-256 | 3706adeed1d166c55920a6a83085e8c8c8b24c8d7708de99f7a814458a3c4529 |