How do I pass structures using a C extension?

timothy.williams at nvl.army.mil timothy.williams at nvl.army.mil
Tue Mar 15 13:44:13 EST 2005


I'm slowly learning how to use distutils. What I have now is a setup.py
and a subdirectory containing the extension I'm playing around with.
########## setup.py ##############
#!/bin/env python
import sys, os, glob
from distutils.core import setup, Extension

py_version='python%d.%d' % (sys.version_info[0],sys.version_info[1])
OTB_HOME='/vps/otbknox/williams/OTB_2.0'
OTB_INCLDIR=[
    os.path.join(OTB_HOME, 'include', 'global'),
    os.path.join(OTB_HOME, 'include', 'libinc'),
    os.path.join(sys.prefix,'include',py_version),
    OTB_HOME
    ]
cmdline_src=glob.glob(os.path.join(OTB_HOME,'libsrc','libcmdline','*.c'))

setup (name = 'OTB_libs',
       version='1.0',
       author="Tim Williams",
       packages=['OTB_libs'],
       py_modules=['OTB_libs.cmdline'],
       ext_package='OTB_libs',
       ext_modules=[Extension('_cmdline',
                              sources=['OTB_libs/cmdline.i']+
cmdline_src,
                              include_dirs=OTB_INCLDIR
                              )
                    ]
       )

#####################
> ls -R setup.py  build/lib.linux-i686-2.3 OTB_libs
setup.py

build/lib.linux-i686-2.3:
OTB_libs/

build/lib.linux-i686-2.3/OTB_libs:
cmdline.py  _cmdline.so*  __init__.py

OTB_libs:
cmdline.i   cmdline.pyc     __init__.py   __init__.pyc  setup.py~
cmdline.py  cmdline_wrap.c  __init__.py~  libcmdline.h
########################

I'll have a list of the <module>.py files that swig generates in a list
of py_modules in my package that's also a ext_package.  'python
setup.py install' puts everything in
site-packages/OTB_libs, and I can just do an
>>> import OTB_libs.cmdline

Copying the libcmdline.h file to the directory where my cmdline.i file
works, but I haven't figured out how to get distutils to tell swig to
look in the OTB_INCLDIR list.




More information about the Python-list mailing list