469,306 Members | 1,987 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,306 developers. It's quick & easy.

Mutual module imports

How does one normally make a Python extension module that has some parts
in Python and some functions in C share globals between the Python and C
functions? Will that approach work with Pyrex?

I have written a Python module that uses some C functions. I wrote the
module in two parts, one Python, one Pyrex (C). They need to share some
globals. (I use pyrex to handle ref counting. I think I'm glad I did.)

At first they just sort of mutually imported each other, and it worked
until I put tests in the Python one and set it up to run them when it is
named "__main__". What happened reminded me that there are also other
ways modules can be imported under different names, so I tried a
different approach.

Now the Python module imports the Pyrex module and just shoves
references to its globals into the Pyrex module (the Pyrex module
defines them as None). The Pyrex module doesn't import the Python
module anymore. This also works, even when the Python module has a
different name (e.g. "__main__"). I just feel dirty about it.
__________________________________________________ ______________________
TonyN.:' *firstname*nlsnews@georgea*lastname*.com
' <http://www.georgeanelson.com/>
Oct 18 '05 #1
2 1680
The trick is via something called Extending. Pyrex just makes extending
a bit easier, but, depending on the complexity of the function, it
might be easier just to extend it yourself. Basically you make a
function that translates python into C. There are some instructions on
the Python website, http://www.python.org . Look around, and you'll
find lots of cool stuff on it.

Oct 18 '05 #2
"Tony Nelson" <*firstname*nlsnews@georgea*lastname*.com> wrote:
[snipped]

I have written a Python module that uses some C functions. I wrote the
module in two parts, one Python, one Pyrex (C). They need to share some
globals.
[snipped]

Now the Python module imports the Pyrex module and just shoves
references to its globals into the Pyrex module (the Pyrex module
defines them as None). The Pyrex module doesn't import the Python
module anymore. This also works, even when the Python module has a
different name (e.g. "__main__"). I just feel dirty about it.


Well, I feel dirty every time I have to share globals <wink>.

George
Oct 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

9 posts views Thread by Paul Rubin | last post: by
8 posts views Thread by Grant D. Watson | last post: by
2 posts views Thread by Matthias Kramm | last post: by
2 posts views Thread by jimmyfishbean | last post: by
6 posts views Thread by Ritesh Raj Sarraf | last post: by
1 post views Thread by Thomas Wittek | last post: by
3 posts views Thread by Jugdish | last post: by
13 posts views Thread by Rafe | last post: by
reply views Thread by zhoujie | last post: by
1 post views Thread by Geralt96 | last post: by
reply views Thread by harlem98 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.