Проблема с расширением _ctypes при загрузке Numpy из Rust с PyO3

Я пытаюсь использовать NumPy из Rust, используя pyO3, все в среде conda. Чтобы связать pyO3, я установил набор инструментов GCC, используя также conda.

Теперь я могу делать простые вещи, такие как отображение sys.path, Тем не менее, когда я пытаюсь импортировать NumPy, вот так:

use pyo3::prelude::*;
use pyo3::types::IntoPyDict;

fn main() -> PyResult<()> {
    let gil = Python::acquire_gil();
    let py = gil.python();

    let r = py.import("numpy");
    match r {
        Ok(_) => println!("OK"),
        Err(e) => e.print(py),
    }

    Ok(())
}

происходит следующее:

Traceback (most recent call last):
  File "<HOME>/anaconda3/envs/pyrust/lib/python3.7/site-packages/numpy/__init__.py", line 140, in <module>
    from . import _distributor_init
  File "<HOME>/anaconda3/envs/pyrust/lib/python3.7/site-packages/numpy/_distributor_init.py", line 33, in <module>
    with RTLD_for_MKL():
  File "<HOME>/anaconda3/envs/pyrust/lib/python3.7/site-packages/numpy/_distributor_init.py", line 18, in __enter__
    import ctypes
  File "<HOME>/anaconda3/envs/pyrust/lib/python3.7/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ImportError: <HOME>/anaconda3/envs/pyrust/lib/python3.7/lib-dynload/_ctypes.cpython-37m-x86_64-linux-gnu.so: undefined symbol: PyUnicode_FromFormat

Интересно, когда я просто набираю python -c "import numpy"проблема не возникает.

я использую RUSTFLAGS="-C linker=$CC" cargo +nightly run построить и запустить код, если это поможет.

0 ответов

Другие вопросы по тегам