我的环境
我想做什么和问题
我想为python写一个库。作为我的惯例,我尝试了文档中的代码。
Cargo.toml
[package]
name = "example"
version = "0.1.0"
authors = ["Yudai Hayashi"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
name = "example"
crate-type = ["cdylib"]
[dependencies]
[dependencies.pyo3]
version = "*"
features = ["extension-module"]src/lib.rs
#![feature(proc_macro, specialization)]
extern crate pyo3;
use pyo3::{py, PyResult, Python, PyModule};
use pyo3::py::modinit as pymodinit;
// add bindings to the generated python module
// N.B: names: "librust2py" must be the name of the `.so` or `.pyd` file
/// This module is implemented in Rust.
#[pymodinit(rust2py)]
fn init_mod(py: Python, m: &PyModule) -> PyResult<()> {
#[pyfn(m, "sum_as_string")]
// pyo3 aware function. All of our python interface could be declared in a separate module.
// Note that the `#[pyfn()]` annotation automatically converts the arguments from
// Python objects to Rust values; and the Rust return value back into a Python object.
fn sum_as_string_py(_: Python, a:i64, b:i64) -> PyResult<String> {
let out = sum_as_string(a, b);
Ok(out)
}
Ok(())
}
// logic implemented as a normal Rust function
fn sum_as_string(a:i64, b:i64) -> String {
format!("{}", a + b).to_string()
}当我构建这个程序时,我遇到了一些错误。
error[E0432]: unresolved import `pyo3::py`
--> src/lib.rs:4:12
|
4 | use pyo3::{py, PyResult, Python, PyModule};
| ^^
| |
| no `py` in the root
| help: a similar name exists in the module: `Py`
error[E0432]: unresolved import `pyo3::py`
--> src/lib.rs:6:11
|
6 | use pyo3::py::modinit as pymodinit;
| ^^ could not find `py` in `pyo3`
error: cannot determine resolution for the attribute macro `pymodinit`
--> src/lib.rs:11:3
|
11 | #[pymodinit(rust2py)]
| ^^^^^^^^^
|
= note: import resolution is stuck, try simplifying macro imports
error: cannot find attribute macro `pyfn` in this scope
--> src/lib.rs:14:7
|
14 | #[pyfn(m, "sum_as_string")]
| ^^^^
error: aborting due to 4 previous errors
For more information about this error, try `rustc --explain E0432`.
error: Could not compile `example`.此错误消息表明pyo3模块中没有"py“。我查找此错误消息,但找不到类似的错误。
如何处理这个问题?
https://stackoverflow.com/questions/57936617
复制相似问题