Re: python modules

看板FB_hackers作者時間18年前 (2007/07/24 11:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
2007/7/13, Mike Meyer <mwm@mired.org>: > On Fri, 13 Jul 2007 21:12:33 +0200 "Mathieu Prevot" <mathieu.prevot@gmail.com> wrote: > > This apparently got redirected without sufficient context, so I'm > guessing. I forgot to cc to hackers. > > 2007/7/13, Mathieu Prevot <mprevot@freebsd.org>: > > > 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 _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
文章代碼(AID): #16fMlV00 (FB_hackers)
文章代碼(AID): #16fMlV00 (FB_hackers)