[Numpy-discussion] Dynamic module not initialized properly
Mark Janikas
mjanikas@esri....
Mon Apr 2 11:46:22 CDT 2007
Thanks for the info Greg. Yup. I am sorry that I had to post a thread
without code to back it up.... unfortunately, there just isn't a way for
me to roll it into an example without the entire package being
installed. This is all very good info you have provided. Ill let you
know how things work out. Thanks again,
MJ
________________________________
From: numpy-discussion-bounces@scipy.org
[mailto:numpy-discussion-bounces@scipy.org] On Behalf Of Steele, Greg
Sent: Monday, April 02, 2007 9:07 AM
To: Discussion of Numerical Python
Subject: Re: [Numpy-discussion] Dynamic module not initialized properly
Mark,
It is hard to comment since you have not provided much information. Your
link to a previous thread brought up a post that I had sent. The issue
that I encountered had to do with the "multiarraymodule.c" extension
module. When "numpy" is imported, it imports this module and the static
variable "_multiarray_module_loaded" gets set. When Python is finalized
is does not unload the multiarraymodule.c DLL. When Python is
initialized again and "numpy" is imported again, the static variable is
already set and multiarraymodule does not import correctly. Hence the
error.
The way I dealt with this is a 'hack', but it worked for us. This was on
a windows platform. After I finalize Python, I forcibly unload the
multiarraymodule DLL using the "FreeLibrary" call. The C code looks like
if (multiarray_loaded) {
HINSTANCE hDLL = NULL;
hDLL = LoadLibraryEx(buf, NULL,LOAD_WITH_ALTERED_SEARCH_PATH);
FreeLibrary(hDLL);
FreeLibrary(hDLL);
}
The two calls of FreeLibrary are needed since each call to LoadLibraryEx
increments the DLL reference count. The call to LoadLibraryEx here gets
a handle to the DLL.
What needs to be done long term is the removal of the static variable in
multiarraymodule. I don't understand the code well enough to know why it
is needed, but that appears to be the crux of the issue. Another
solution would be for Python to call FreeLibrary on all the DLLs during
Py_Finalize.
Greg
________________________________
From: numpy-discussion-bounces@scipy.org
[mailto:numpy-discussion-bounces@scipy.org] On Behalf Of Mark Janikas
Sent: Friday, March 30, 2007 4:55 PM
To: Discussion of Numerical Python
Subject: [Numpy-discussion] Dynamic module not initialized properly
Hello all,
I am having an issue importing numpy on subsequent (I.e. not on first
load) attempts in our software. The majority of the code is written in
C, C++ and I am a python developer and do not have direct access to a
lot of it. This is a bit of a difficult question to ask all of you
because I cant provide you a direct example. All I can do is point to a
numpy thread that discusses the issue:
http://groups.google.com/group/Numpy-discussion/browse_thread/thread/321
77a82deab05ae/d8eecaf494ba5ad5?lnk=st&q=dynamic+module+not+initialized+p
roperly+numpy&rnum=1&hl=en#d8eecaf494ba5ad5
ERROR:
exceptions.SystemError: dynamic module not initialized properly
What is really odd about my specific issue is that if I don't change
anything in the source code.... Then the error doesn't pop up.
Furthermore, the error doesn't show on some attempts even after I make a
change!!!! Not sure whether there is anything I can do from the
scripting side (some alternative form of reload?)... or if I have to
forward it along to the C developers. You have my appreciation ahead of
time.
Mark Janikas
Product Engineer
ESRI, Geoprocessing
380 New York St.
Redlands, CA 92373
909-793-2853 (2563)
mjanikas@esri.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20070402/d0b819cb/attachment-0001.html
More information about the Numpy-discussion
mailing list