2 个版本
0.1.3 | 2021年9月28日 |
---|---|
0.1.0 | 2020年12月28日 |
#449 in Cargo 插件
13KB
118 行
cargo-pyinit
Cargo 扩展,将Rust crate转换为混合Python/Rust库。
此crate基于PyO3 https://github.com/PyO3/pyo3
先决条件
您需要
- Python 3 (https://pythonlang.cn/)
- setuptools_rust (https://github.com/PyO3/setuptools-rust#pyprojecttoml)
- Python toml 库。
setuptools_rust 可以使用pip安装
pip install setuptools_rust
而toml可以这样安装
pip install toml
安装
从GitHub
git clone https://github.com/rexlunae/cargo-pyinit.git
cd cargo-pyinit
cargo install --path .
从Cargo
cargo install pyinit
用法
pyinit只能用于创建或修改库crate。
在源目录内部
cd my-create-directory
cargo pyinit
如果目录已经是Cargo crate,则将其转换为适合与Python一起使用的混合crate。如果目录为空,则将创建一个与所在目录同名的新的库crate。
在目录外部
cargo pyinit crate-name
这将创建指定的目录(如果需要),然后创建一个新的crate或修改现有的crate。
与PyO3的示例代码不同,pyinit创建了一个新文件(pylib.rs),它成为库的基础,并从旧的lib.rs(或之前叫什么名字)导入所有内容。这稍微分离了Python接口的定义,但也意味着某些只能在crate顶级允许的项目(如功能标志)需要手动移动。在创建新crate时,结果将直接与cargo build
或Python设置工具一起工作,但如果您正在修改现有的crate,您可能需要手动将一些内容从lib.rs移动到pylib.rs。您还需要手动构建Python接口。这不是自动发生的。
生成的混合crate有一个setup.py,可以用python setup.py develop
安装为开发版本,或者用python setup.py install
安装为发布版本。您还可以使用pip install .
依赖项
~4–6MB
~102K SLoC