2016-11-01 5 views
3

Я не могу открыть numpy с API Python C. У меня есть следующий кодНевозможно импортировать numpy из C

#include<Python.h> 
int main() 
{ 
    Py_Initialize(); 
    PyRun_SimpleString("import numpy"); 
    PyObject* numpy = PyImport_ImportModule("numpy"); 
    Py_Finalize(); 
    return 0; 
} 

линии PyRun_SimpleString("import numpy") печатает на консоль:

Traceback (most recent call last): File "", line 1, in File "C:\Users\matt.heath\AppData\Local\Continuum\Anaconda3\lib\site-packages\numpy__init__.py", line 180, in from . import add_newdocs File "C:\Users\matt.heath\AppData\Local\Continuum\Anaconda3\lib\site-packages\numpy\add_newdocs.py", line 13, in from numpy.lib import add_newdoc File "C:\Users\matt.heath\AppData\Local\Continuum\Anaconda3\lib\site-packages\numpy\lib__init__.py", line 8, in from .type_check import * File "C:\Users\matt.heath\AppData\Local\Continuum\Anaconda3\lib\site-packages\numpy\lib\type_check.py", line 11, in import numpy.core.numeric as _nx File "C:\Users\matt.heath\AppData\Local\Continuum\Anaconda3\lib\site-packages\numpy\core__init__.py", line 14, in from . import multiarray ImportError: cannot import name 'multiarray'

и PyImport_ImportModule("numpy") возвращает NULL.

Я могу открыть другие модули OK (например, PyRun_SimpleString("import chunk"); в порядке), а import numpy отлично работает с Python в консоли.

Я использую Windows 10 и Python 3.5.

Что я могу сделать?

+0

В вашей ошибке указано, что он не может импортировать 'numpy.core.multiarray'. Это общий объект. I.e., он скомпилирован, а не обычный файл Python. Моя гипотеза заключается в том, что ваш образец кода не может импортировать объектные файлы и что требуется другой подход. – chrisaycock

+0

@chrisaycock, который помогает. Думаю, я задам более точный вопрос, основанный на этом – MatthewJohnHeath

ответ

0

На самом деле, это только проблема в отладочной сборке. Я сам создал python35_d.dll, в то время как dll-релиз был уже скомпилирован, поэтому, возможно, у меня была какая-то странная настройка в файле make-файла или что-то в этом роде. Во всяком случае, я могу жить без отладки, я думаю.

Смежные вопросы