python Модуль f2py показывает, что символ mkl не найден, если только numpy не загружен первым - PullRequest
0 голосов
/ 10 февраля 2020
system:
Mac OSX 10.14
Miniconda Python (3.7.6)
numpy 1.18.1
gcc 9.2 (homebrew)
gfortran 9.2 (homebrew)
mkl 2020.0 (from anaconda)

Я связываю модуль f2py с предоставленными conda библиотеками MKL, но перед импортом numpy я получаю символ не найден. Я задаюсь вопросом, является ли это ожидаемым поведением, а именно, требуется ли мне импортировать numpy, или я просто делаю что-то не так, как показано ниже, и если да, то что?

Возьмите следующий файл с именем Fortran под названием test.f90:

subroutine hello
        print *, "hello world"
end subroutine

скомпилировать с: f2py -c -m test test.f90 -L$CONDA_PREFIX/lib -lmkl_rt -lmkl_core

Теперь запустите на терминале следующее:

> python
Python 3.7.6 (default, Jan  8 2020, 13:42:34) 
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import test
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Users/username/pth/test.cpython-37m-darwin.so, 2): Symbol not found: _mkl_blas_caxpy
  Referenced from: /Users/username/miniconda3/lib/libmkl_core.dylib
  Expected in: flat namespace
 in /Users/username/miniconda3/lib/libmkl_core.dylib
>>> import numpy
>>> import test
>>> test.hello()
 hello world
>>> 
...