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