Num Array problem with Embedding python in C

Y

youngdubliner

I'm having a problem ........

I've stripped all my code to help isolate the problem.

Its seems to be with importing numarray when python is embedded in C.

I have a simple C program it Opens Python imports a script and
then Closes Python

like so .......

int main(int argc,char *argv[])
{

int count = 0;
PyObject *pmod;

while ( count < 10)
{

/*
** Initialize Python
*/

Py_Initialize();
printf("\nOpen Python ---- >");

pmod = PyImport_ImportModule("test");

Py_DECREF(pmod);

/*
** Close Python
*/

Py_Finalize();
printf("\n<---- Closed Python");


/*
** Do this 10 times !
*/
count++;

}
getchar();
return(0);

}

and thats it !

The script it calls is test.py its very simple , it imports numarray
and then returns. like so .......

-----------------------
test.py
-----------------------
#Imports
from numarray import *

def test_func():
return (99)
-----------------------
end of file
-----------------------


The first time it is called from my C code
it all works fine ! ( but only the first time ! )

In the second iteration above test .c crashes

It has something to do with importing numarray.
Beacase if you comment out the import line i.e

-----------------------
test.py
-----------------------
#Imports
# Commented out !
#from numarray import *

def test_func():
return (99)
-----------------------
end of file
-----------------------

its scrolls through the while loop and works fine.

Its all very odd . any ideas ?


I'm using Python 2.3.3 and Python 2.3 numarray - 0.8

Thanks in advance

Keith.
 
F

Fernando Perez

I'm having a problem ........

I've stripped all my code to help isolate the problem.

Its seems to be with importing numarray when python is embedded in C.

I have a simple C program it Opens Python imports a script and
then Closes Python

like so .......

int main(int argc,char *argv[])
{

int count = 0;
PyObject *pmod;

while ( count < 10)
{

/*
** Initialize Python
*/

Py_Initialize();
printf("\nOpen Python ---- >");

pmod = PyImport_ImportModule("test");

Py_DECREF(pmod);

/*
** Close Python
*/

Py_Finalize();
printf("\n<---- Closed Python");


/*
** Do this 10 times !
*/
count++;

}
getchar();
return(0);

}

and thats it !

The script it calls is test.py its very simple , it imports numarray
and then returns. like so .......

-----------------------
test.py
-----------------------
#Imports
from numarray import *

def test_func():
return (99)
-----------------------
end of file
-----------------------


The first time it is called from my C code
it all works fine ! ( but only the first time ! )

In the second iteration above test .c crashes

From: http://www.pfdubois.com/numpy/html2/numpy-13.html

*************************************************************************
The Numeric installation process installed arrayobject.h in a subdirectory
Numeric in your Python include path, so you should include it this way:

#include "Numeric/arrayobject.h"


Is your C extension using Numeric blowing up? Maybe you didn't call
import_array(). If the extension is not in a single file, also define
PY_ARRAY_UNIQUE_SYMBOL.


In addition to including arrayobject.h , the extension must call import_array()
in its initialization function, after the call to Py_InitModule() . This call
makes sure that the module which implements the array type has been imported,
and initializes a pointer array through which the NumPy functions are called.
If you forget this call, your extension module will crash on the first call to
a NumPy function.

*************************************************************************

This referst to Numeric, but I'm sure the same issue exists with Numarray (I
still use Numeric, so I don't know the details with numarray).

cheers,

f
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,077
Latest member
SangMoor21

Latest Threads

Top