2016-11-01 5 views
3

Ich kann numpy mit der Python C API nicht öffnen. Ich habe den folgenden CodeKann numpy nicht importieren von C

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

Die Linie PyRun_SimpleString("import numpy") Drucke zu trösten:

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'

und PyImport_ImportModule("numpy") kehrt NULL.

Ich kann andere Module öffnen OK (z. B. PyRun_SimpleString("import chunk"); ist in Ordnung) und import numpy funktioniert gut aus Python in einer Konsole.

Ich verwende Windows 10 und Python 3.5.

Was kann ich tun?

+0

Ihr Fehler besagt, dass "numpy.core.multiarray" nicht importiert werden kann. Dies ist ein gemeinsames Objekt. Das heißt, es ist eher kompiliert als eine normale Python-Datei. Meine Hypothese ist, dass Ihr Codebeispiel Objektdateien nicht importieren kann und dass ein anderer Ansatz erforderlich ist. – chrisaycock

+0

@chrisaycock, das hilft. Ich denke, darauf werde ich eine genauere Frage stellen – MatthewJohnHeath

Antwort

0

Eigentlich ist dies nur ein Problem in einem Debug-Build. Ich habe python35_d.dll selbst erstellt, während die Release-DLL bereits kompiliert wurde. Vielleicht hatte ich eine seltsame Einstellung in der make-Datei oder so. Wie auch immer, ich kann ohne Debuggen leben, denke ich.

Verwandte Themen