diff --git a/python/__init__.py b/python/__init__.py index f4492ce8..b97aa91b 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -5,6 +5,32 @@ from . import config _netgen_bin_dir=os.path.realpath(os.path.join(os.path.dirname(__file__),'..',config.NETGEN_PYTHON_RPATH_BIN)) _netgen_lib_dir=os.path.realpath(os.path.join(os.path.dirname(__file__),'..',config.NETGEN_PYTHON_RPATH)) +__diagnostics_template = """ +Netgen diagnostics: + sys.platform: {sys.platform} + sys.executable: {sys.executable} + sys.version: {sys.version} + Netgen python version: {config.PYTHON_VERSION} + Netgen path {__file__} + Netgen config {config.__file__} + Netgen version {config.NETGEN_VERSION} + sys.path: {sys.path} +""" + +def _get_diagnostics(): + return __diagnostics_template.format(sys=sys, config=config, __file__=__file__) + +# compare compile-time and run-time python version +def _check_python_version(): + sys_version = f"{sys.version_info.major}.{sys.version_info.minor}" + compile_version = f"{config.PYTHON_VERSION_MAJOR}.{config.PYTHON_VERSION_MINOR}" + + if sys_version != compile_version: + print(get_diagnostics(), file=sys.stderr) + raise RuntimeError(f"Python version mismatch: compile-time version is {compile_version}, run-time version is {sys_version}") + +_check_python_version() + if sys.platform.startswith('win'): v = sys.version_info if v.major == 3 and v.minor >= 8: diff --git a/python/config_template.py b/python/config_template.py index 23030595..38991567 100644 --- a/python/config_template.py +++ b/python/config_template.py @@ -52,4 +52,8 @@ NETGEN_VERSION_TWEAK = "@NETGEN_VERSION_TWEAK@" NETGEN_VERSION_PATCH = "@NETGEN_VERSION_PATCH@" NETGEN_VERSION_HASH = "@NETGEN_VERSION_HASH@" +PYTHON_VERSION = "@PYTHON_VERSION@" +PYTHON_VERSION_MAJOR = "@PYTHON_VERSION_MAJOR@" +PYTHON_VERSION_MINOR = "@PYTHON_VERSION_MINOR@" + version = NETGEN_VERSION_GIT