导入numpy并调用Fortran库时出现分段错误

时间:2018-09-17 06:02:18

标签: python numpy cython

这很奇怪。

我正在使用Cython构建包装外部库(mypackage)的Python程序包(我们称之为externallib)。 externallib用Fortran编写,但是有一个用C编写的接口库。我使用这个C接口库从Cython访问externallib

直到我导入numpy或依赖于numpy的任何其他软件包(例如pintmatplotlib,{{ 1}}等)放入pandas模块(一个mypackage.core文件)中。我只导入这些软件包,甚至不使用它们。这会导致分割错误。

.pyx

当我多次调用Current thread 0x00007f02925ee740 (most recent call first): File "build/temp/mypackage/core_test.py", line 191 in _test_runner File "build/temp/mypackage/core_test.py", line 291 in test__str__ File "/home/user/anaconda3/envs/mypackage-build-python3.6.5/lib/python3.6/unittest/case.py", line 605 in run File "/home/user/anaconda3/envs/mypackage-build-python3.6.5/lib/python3.6/unittest/case.py", line 653 in __call__ File "/home/user/anaconda3/envs/mypackage-build-python3.6.5/lib/python3.6/unittest/suite.py", line 122 in run File "/home/user/anaconda3/envs/mypackage-build-python3.6.5/lib/python3.6/unittest/suite.py", line 84 in __call__ File "/home/user/anaconda3/envs/mypackage-build-python3.6.5/lib/python3.6/unittest/suite.py", line 122 in run File "/home/user/anaconda3/envs/mypackage-build-python3.6.5/lib/python3.6/unittest/suite.py", line 84 in __call__ File "/home/user/anaconda3/envs/mypackage-build-python3.6.5/lib/python3.6/unittest/runner.py", line 176 in run File "/home/user/anaconda3/envs/mypackage-build-python3.6.5/lib/python3.6/unittest/main.py", line 256 in runTests File "/home/user/anaconda3/envs/mypackage-build-python3.6.5/lib/python3.6/unittest/main.py", line 95 in __init__ File "build/temp/mypackage/core_test.py", line 311 in <module> ../build/scripts/build-package-linux.sh: line 151: 22796 Segmentation fault (core dumped) python3 build/temp/mypackage/core_test.py 以提供计算输入数据后,在externallib中调用计算例程时,就会发生分段错误。

我知道numpy也是使用Fortran,C和Cython内置的。我应该寻找明显的东西来确保numpy与其他C / Fortran外部库之间的兼容性吗?造成细分错误的原因是什么?

感谢您的帮助。

0 个答案:

没有答案