This fixes the segmentation fault when converting numpy and Eigen. The reason is that NumpyEigenConverter.hpp includes numpy/arrayobject.h, and for the numpy's C-API to work in multiple files we need to define NO_IMPORT_ARRAY before including numpy/arrayobject.h in all the source files but the one that defines the module initialization (exportgtsam.cpp in out case), as explained here: http://docs.scipy.org/doc/numpy/reference/c-api.array.html#importing-the-api Note that PY_ARRAY_UNIQUE_SYMBOL, also needed to work multifile, is already defined on NumpyEigenConverter.hpp. |
||
---|---|---|
.. | ||
gtsam | ||
gtsam_tests | ||
handwritten | ||
CMakeLists.txt | ||
README.md | ||
setup.py |
README.md
Python Wrapper and Packaging
This directory contains the basic setup script and directory structure for the gtsam python module. During the build of gtsam, when GTSAM_BUILD_PYTHON is enabled, the following instructions will run.
- Wrap parses gtsam.h and constructs a cpp file called ${moduleName}_python.cpp
- This file is then compiled and linked with BoostPython, generating a shared library which can then be imported by python
- The shared library is then copied to python/gtsam
- The user can use the setup.py script to build and install a python package, allowing easy importing into a python project. Examples:
- python setup.py sdist ---- Builds a tarball of the python package which can then be distributed
- python setup.py install ---- Installs the package into the python dist-packages folder. Can then be imported from any python file.
- To run the unit tests, you must first install the package on your path (TODO: Make this easier)
TODO: There are many issues with this build system, but these are the basics.