2007/7/13, Mike Meyer <[EMAIL PROTECTED]>:
On Fri, 13 Jul 2007 21:12:33 +0200 "Mathieu Prevot" <[EMAIL PROTECTED]> wrote:
This apparently got redirected without sufficient context, so I'm
guessing.
I forgot to cc to hackers.
> 2007/7/13, Mathieu Prevot <[EMAIL PROTECTED]>:
> > I learn that modules loaded with import fall into 4 general categories:
> > - code written in Python (.py)
> > - C or C++ extensions that have been compiled into shared libraries (or
DLLs)
These are *Python extensions* written in C or C++ (among other
things), not arbitrary shared object libraries (or .so's).
> > - Packages containing collection of modules
> > - Built-in modles writen in C and linked into the Python interpreter
> > Why don't we use directly the libpmc library in C instead of rewritting
> > things in python ?
Are you writing in Python now and want to use libpmc? Doing that is
one approach.
I'm doing this. This approach _seems_ to be the easier way.
> I copied libpmc.so and tryed 'import libpmc'. I have:
> ImportError: dynamic module does not define init function (initlibpmc)
To be expected. The init function is part of what turns it into a
Python extension library.
> Are we really far from having a libpmc module ?
There are at least two other approaches to getting access to libpmc
from Python:
1) Write a wrapper library that is a Python extensions and translates
calls.
This work is in progress in fact, but I wanted to have ASAP access to
pmc(3) with a minimum of (keyboard) effort. I don't care of
docstrings.
2) Use the ctypes python module to access libpmc. ctypes has been
bundled into 2.5, so that would be my preference. Just one less
thing to install.
This is probably more appropriate in c.l.python, but it's hard to say
without context.
I didn't tryed this module, rather (a bit) the ezpyinline module,
coupled to `gcc -E /usr/src/lib/libpmc/libpmc.c` (no preprocessing
with the module, only compilation).
The ezpyinline module work like this:
----
#!/usr/bin/python
import ezpyinline
#step 1
code = r"""
int helloworld() {
printf("hello ezpyinline!
");
}
"""
#step 2
ezc = ezpyinline.C(code)
#step 3
ezc.helloworld()
----
I'll give ctypes a chance (when I have time :) )... thanks
Mathieu
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"