|
@@ -2,8 +2,34 @@
|
2
|
2
|
|
3
|
3
|
void pyinit()
|
4
|
4
|
{
|
5
|
|
- update_python_path();
|
|
5
|
+ char *venv_path;
|
|
6
|
+ PyObject *sitemod, *mainfun;
|
|
7
|
+
|
|
8
|
+ if( (venv_path = getenv("VIRTUAL_ENV")) )
|
|
9
|
+ {
|
|
10
|
+ setenv("PYTHONHOME", venv_path, 1);
|
|
11
|
+ swprintf(PyFCGI_conf.context.venv_path, PATH_MAX, L"%s",
|
|
12
|
+ venv_path);
|
|
13
|
+ Py_SetPythonHome(PyFCGI_conf.context.venv_path);
|
|
14
|
+ pyfcgi_log(LOG_INFO, "Virtualenv found : setting PYTHONHOME : '%s'",
|
|
15
|
+ venv_path);
|
|
16
|
+
|
|
17
|
+ swprintf(PyFCGI_conf.context.python_path, PATH_MAX,
|
|
18
|
+ L"%s/bin/python3", venv_path);
|
|
19
|
+ Py_SetProgramName(PyFCGI_conf.context.python_path);
|
|
20
|
+
|
|
21
|
+ pyfcgi_log(LOG_INFO, "Setting programm name : '%ls'",
|
|
22
|
+ PyFCGI_conf.context.python_path);
|
|
23
|
+ }
|
|
24
|
+
|
6
|
25
|
Py_Initialize();
|
|
26
|
+ sitemod = PyImport_ImportModule("site");
|
|
27
|
+ mainfun = PyObject_GetAttrString(sitemod, "main");
|
|
28
|
+ PyObject_CallObject(mainfun, NULL);
|
|
29
|
+
|
|
30
|
+ //Append "." to sys.path
|
|
31
|
+ sitemod = PySys_GetObject("path");
|
|
32
|
+ PyList_Append(sitemod, PyUnicode_FromString("."));
|
7
|
33
|
}
|
8
|
34
|
|
9
|
35
|
void update_python_path()
|
|
@@ -73,6 +99,7 @@ void update_python_path()
|
73
|
99
|
goto update_python_path_err_wcwd;
|
74
|
100
|
}
|
75
|
101
|
ppath = wcsdup(ppath);
|
|
102
|
+dprintf(2, "%ls\n", ppath);
|
76
|
103
|
if(!wcwd)
|
77
|
104
|
{
|
78
|
105
|
err = errno;
|
|
@@ -90,6 +117,7 @@ void update_python_path()
|
90
|
117
|
}
|
91
|
118
|
ppath = wtmp;
|
92
|
119
|
wcsncpy(ppath+ppath_sz, wcwd, wcwd_sz);
|
|
120
|
+dprintf(2, "%ls\n", ppath);
|
93
|
121
|
Py_SetPath(ppath);
|
94
|
122
|
|
95
|
123
|
free(ppath);
|