aboutsummaryrefslogtreecommitdiff
path: root/pythonmod/pythonmod.c
diff options
context:
space:
mode:
Diffstat (limited to 'pythonmod/pythonmod.c')
-rw-r--r--pythonmod/pythonmod.c39
1 files changed, 29 insertions, 10 deletions
diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c
index 4bea54e6aceb..7c7da548994a 100644
--- a/pythonmod/pythonmod.c
+++ b/pythonmod/pythonmod.c
@@ -255,7 +255,7 @@ cleanup:
int pythonmod_init(struct module_env* env, int id)
{
int py_mod_idx = py_mod_count++;
-
+
/* Initialize module */
FILE* script_py = NULL;
PyObject* py_init_arg, *res;
@@ -316,23 +316,37 @@ int pythonmod_init(struct module_env* env, int id)
if (py_mod_count==1) {
/* Initialize Python */
- PyRun_SimpleString("import sys \n");
+ if(PyRun_SimpleString("import sys \n") < 0 ) {
+ goto python_init_fail;
+ }
PyRun_SimpleString("sys.path.append('.') \n");
+ PyRun_SimpleString("sys.path.append('"RUN_DIR"') \n");
+ PyRun_SimpleString("sys.path.append('"SHARE_DIR"') \n");
if(env->cfg->directory && env->cfg->directory[0]) {
char wdir[1524];
snprintf(wdir, sizeof(wdir), "sys.path.append('%s') \n",
env->cfg->directory);
PyRun_SimpleString(wdir);
}
- PyRun_SimpleString("sys.path.append('"RUN_DIR"') \n");
- PyRun_SimpleString("sys.path.append('"SHARE_DIR"') \n");
- PyRun_SimpleString("import distutils.sysconfig \n");
- PyRun_SimpleString("sys.path.append(distutils.sysconfig.get_python_lib(1,0)) \n");
- if (PyRun_SimpleString("from unboundmodule import *\n") < 0)
+ /* Check if sysconfig is there and use that instead of distutils;
+ * distutils.sysconfig is deprecated in Python 3.10. */
+ if(PyRun_SimpleString("import sysconfig \n") < 0) {
+ log_info("pythonmod: module sysconfig not available; "
+ "falling back to distutils.sysconfig.");
+ if(PyRun_SimpleString("import distutils.sysconfig \n") < 0
+ || PyRun_SimpleString("sys.path.append("
+ "distutils.sysconfig.get_python_lib(1,0)) \n") < 0) {
+ goto python_init_fail;
+ }
+ } else {
+ if(PyRun_SimpleString("sys.path.append("
+ "sysconfig.get_path('platlib')) \n") < 0) {
+ goto python_init_fail;
+ }
+ }
+ if(PyRun_SimpleString("from unboundmodule import *\n") < 0)
{
- log_err("pythonmod: cannot initialize core module: unboundmodule.py");
- PyGILState_Release(gil);
- return 0;
+ goto python_init_fail;
}
}
@@ -480,6 +494,11 @@ int pythonmod_init(struct module_env* env, int id)
PyGILState_Release(gil);
return 1;
+
+python_init_fail:
+ log_err("pythonmod: cannot initialize core module: unboundmodule.py");
+ PyGILState_Release(gil);
+ return 0;
}
void pythonmod_deinit(struct module_env* env, int id)