After linking a .so with boost-python:
-L/usr/local/lib -lboost_serialization -lboost_python -lpython2.7 -O2
When I import it to a .py file, I got
TypeError: __init__() should return None, not 'NoneType'
This is due to the mismatch of libpython in .so and current interpreter:
$ otool -L model.so 
model.so:
    model.so (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.10)
Solution
Use -L to inform the linker where the correct libpython is:
-L`python -c "import distutils.sysconfig as c; print(c.PREFIX)"`/lib -L/usr/local/lib -lboost_serialization -lboost_python -lpython2.7 -O2
