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"