Merge pull request #435 from wjakob/master

extra python version sanity check at import time
This commit is contained in:
Wenzel Jakob 2016-10-09 20:06:33 +02:00 committed by GitHub
commit c3d8b8cf42

View File

@ -147,6 +147,18 @@ extern "C" {
#define PYBIND11_PLUGIN(name) \ #define PYBIND11_PLUGIN(name) \
static PyObject *pybind11_init(); \ static PyObject *pybind11_init(); \
PYBIND11_PLUGIN_IMPL(name) { \ PYBIND11_PLUGIN_IMPL(name) { \
int major, minor; \
if (sscanf(Py_GetVersion(), "%i.%i", &major, &minor) != 2) { \
PyErr_SetString(PyExc_ImportError, "Can't parse Python version."); \
return nullptr; \
} else if (major != PY_MAJOR_VERSION || minor != PY_MINOR_VERSION) { \
PyErr_Format(PyExc_ImportError, \
"Python version mismatch: module was compiled for " \
"version %i.%i, while the interpreter is running " \
"version %i.%i.", PY_MAJOR_VERSION, PY_MINOR_VERSION, \
major, minor); \
return nullptr; \
} \
try { \ try { \
return pybind11_init(); \ return pybind11_init(); \
} catch (const std::exception &e) { \ } catch (const std::exception &e) { \