0
0

maturin AttributeError モジュールはあるのに関数がない

Last updated at Posted at 2024-08-06

maturinでRustコードをビルドして、Pythonからインポートする段階でエラーが出ました。

.stderr
AttributeError: module 'pymodtest' has no attribute 'add_two'

環境

Github Actions:
- ubuntsu-latest
- Python 3.12
- maturin 1.7.0

ソースコード

Github
fixedブランチに修正版もあります

ディレクトリ構成

inline-maturin
    | -- inline_maturin.py
    | -- test_inline_maturin.py
    | -- pymodtest
    |    | -- Cargo.toml
    |    | -- pyproject.toml
    |    | -- __init__.py
    |    | -- src
    |    |    |  -- lib.rs

状況

  • ImportErrorではない(インポート自体は成功)
  • インポートしたモジュールから関数にアクセスしようとするとエラー

解決策

__init__.pyを削除する

考察

maturinは、__init__.pyが存在するモジュールをPythonとRustの混合モジュールとして解釈するようです。1

すると、maturinはPythonコードが入ったフォルダを探そうとします。しかし、今回そのフォルダは作っていないため、maturinはこのモジュールを空モジュールとして認識してしまい、AttributeErrorが送出されていたようです。

  1. 参考:https://www.maturin.rs/project_layout#mixed-rustpython-project

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0