summaryrefslogtreecommitdiffstats
path: root/src/if_python3.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-01-31 21:49:05 +0100
committerBram Moolenaar <Bram@vim.org>2018-01-31 21:49:05 +0100
commit94073167e3aa8cbe18380e93a2fc8e8165438cc8 (patch)
tree2e7c3078ffc53518b95979a118b16403699381ae /src/if_python3.c
parent1dd45fb4f3371f0256653b2186c8b4b3d26b3f41 (diff)
patch 8.0.1451: difficult to set the python home directories properlyv8.0.1451
Problem: It is difficult to set the python home directory properly for Python 2.7 and 3.5 since both use $PYTHONHOME. Solution: Add the 'pythonhome' and 'pythonthreehome' options. (Kazuki Sakamoto, closes #1266)
Diffstat (limited to 'src/if_python3.c')
-rw-r--r--src/if_python3.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/if_python3.c b/src/if_python3.c
index 7aa5f03e1d..02d913492c 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -842,6 +842,8 @@ python3_loaded(void)
}
#endif
+static wchar_t *py_home_buf = NULL;
+
static int
Python3_Init(void)
{
@@ -857,11 +859,18 @@ Python3_Init(void)
init_structs();
+ if (*p_py3home != NUL)
+ {
+ size_t len = mbstowcs(NULL, (char *)p_py3home, 0) + 1;
+ /* The string must not change later, make a copy in static memory. */
+ py_home_buf = (wchar_t *)alloc(len * sizeof(wchar_t));
+ if (py_home_buf != NULL && mbstowcs(
+ py_home_buf, (char *)p_py3home, len) != (size_t)-1)
+ Py_SetPythonHome(py_home_buf);
+ }
#ifdef PYTHON3_HOME
-# ifdef DYNAMIC_PYTHON3
- if (mch_getenv((char_u *)"PYTHONHOME") == NULL)
-# endif
+ else if (mch_getenv((char_u *)"PYTHONHOME") == NULL)
Py_SetPythonHome(PYTHON3_HOME);
#endif