diff --git a/pymolfile/molfile/pymolfile.cxx b/pymolfile/molfile/pymolfile.cxx index d5ba6cb2eee5610d7f14b4414e44b6a27f4c9bde..e8d4c8572eff44e3b46b5c93364c8ae4ef997a39 100644 --- a/pymolfile/molfile/pymolfile.cxx +++ b/pymolfile/molfile/pymolfile.cxx @@ -38,7 +38,12 @@ molfile_plugin_t** plugin_list; #define PyInt_AsLong PyLong_AsLong #define PyString_FromString PyBytes_FromString #define PyInt_FromLong PyLong_FromLong - +int initNumpyArray(void){ + if(PyArray_API == NULL) + { + import_array(); + } +} void del_molfile_plugin_list(PyObject* molcapsule) { plugin_list = (molfile_plugin_t**) PyMolfileCapsule_AsVoidPtr(molcapsule); @@ -52,6 +57,12 @@ void del_molfile_file_handle(PyObject* molcapsule) Py_XDECREF(molcapsule); } #else +void initNumpyArray(void){ + if(PyArray_API == NULL) + { + import_array(); + } +} void del_molfile_plugin_list(void* molcapsule) { plugin_list = (molfile_plugin_t**) PyMolfileCapsule_AsVoidPtr((PyObject*)molcapsule); @@ -201,7 +212,7 @@ PyObject * molfile_plugin_info(PyObject* molcapsule, int plugin_no) { PyObject* read_fill_structure(PyObject* molpack, PyObject* prototype) { //Py_Initialize(); - import_array(); + initNumpyArray(); int options = 0; molfile_plugin_t* plugin; void* file_handle; @@ -264,7 +275,7 @@ PyObject* read_fill_structure(PyObject* molpack, PyObject* prototype) PyObject* read_fill_bonds(PyObject* molpack) { - import_array(); + initNumpyArray(); int options = 0; molfile_plugin_t* plugin; void* file_handle; @@ -359,7 +370,7 @@ PyObject* read_fill_bonds(PyObject* molpack) PyObject* read_fill_angles(PyObject* molpack) { - import_array(); + initNumpyArray(); int options = 0; molfile_plugin_t* plugin; void* file_handle; @@ -558,7 +569,7 @@ PyObject* read_fill_angles(PyObject* molpack) PyObject* read_fill_next_timestep(PyObject* molpack) { - import_array(); + initNumpyArray(); molfile_plugin_t* plugin; void* file_handle; int numatoms, status; diff --git a/pymolfile/molfile/pymolfile.h b/pymolfile/molfile/pymolfile.h index 97019a9aaa57d59206500d0e3b6c622aad7c1b5a..b0c31fb3c2096ce487f0bf1da58b7927f8cd6c27 100644 --- a/pymolfile/molfile/pymolfile.h +++ b/pymolfile/molfile/pymolfile.h @@ -22,6 +22,12 @@ extern "C" #endif +#if PY_VERSION_HEX >= 0x03000000 +#define NUMPY_IMPORT_ARRAY_RETVAL NULL +#else +#define NUMPY_IMPORT_ARRAY_RETVAL +#endif + #include "molfile_plugin.h" #include "libmolfile_plugin.h" #include "vmdplugin.h"