Py_SetPythonHome() can be called before Py_Initialize(); thanks to Cody Smith from docs@
diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst
index 94f8c05..7507e3b 100644
--- a/Doc/c-api/init.rst
+++ b/Doc/c-api/init.rst
@@ -29,7 +29,7 @@
 
    Initialize the Python interpreter.  In an application embedding  Python, this
    should be called before using any other Python/C API functions; with the
-   exception of :c:func:`Py_SetProgramName` and :c:func:`Py_SetPath`.  This initializes
+   exception of :c:func:`Py_SetProgramName`, :c:func:`Py_SetPythonHome` and :c:func:`Py_SetPath`.  This initializes
    the table of loaded modules (``sys.modules``), and creates the fundamental
    modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`.  It also initializes
    the module search path (``sys.path``). It does not set ``sys.argv``; use