1

Python からさらにインポートするために Rust ライブラリをコンパイルするためのさまざまなチュートリアルに従っている間 (私はPyO3rust-cpython のmain.py両方を試しました)、単純なライブラリを構築し、インタラクティブな Python シェルから正常にインポートすることができました。

ただし、純粋な Python と私の Rust ライブラリをテストおよびベンチマークしようとすると、一貫してインポート エラーが発生します。

_____________________________________________ ERROR collecting main.py _____________________________________________
ImportError while importing test module '/Users/xxx/pyo3/sumlib/main.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/xxx/.pyenv/versions/3.8.2/lib/python3.8/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
main.py:1: in <module>
    import sumlib
E   ModuleNotFoundError: No module named 'sumlib'

繰り返しますが、ライブラリは、メインの python ファイルと のような対話型シェルから問題なくインポートされますIPython

私は macOS Big Sur を使用しており、Python 3.8 を使用してインストールしてpyenvいます。これが私のものCargo.tomlです:

[package]
name = "sumlib"
version = "0.1.0"
edition = "2018"

[lib]
name = "sumlib"
# "cdylib" is necessary to produce a shared library for Python to import from.
#
# Downstream Rust code (including code in `bin/`, `examples/`, and `tests/`) will not be able
# to `use string_sum;` unless the "rlib" or "lib" crate type is also included, e.g.:
# crate-type = ["cdylib", "rlib"]
crate-type = ["cdylib", "rlib"]

[dependencies.pyo3]
version = "0.14.2"
features = ["extension-module"]

PyO3andrust-cpythonから同じ結果まで、他のすべては非常に簡単です。

4

1 に答える 1