Вы можете установить Py_NoSiteFlag
для подавления загрузки site.py
при инициализации интерпретатора Python. site
может быть загружен позже вручную.
Вот минимальный пример:
#define PY_SSIZE_T_CLEAN
#include <Python.h>
int
main(int argc, char *argv[])
{
Py_NoSiteFlag = 1; /* Suppress 'import site' */
Py_Initialize();
PyRun_SimpleString("import sys; print('site' in sys.modules)\n");
//There are no site-packages in path:
PyRun_SimpleString("print(sys.path)\n");
// do what must be done
// ....
//now, import site manually,
//call site.main(), so site-packages are added to sys.path:
PyRun_SimpleString("import site; site.main()");
//now, site-packages are in path:
PyRun_SimpleString("print(sys.path)\n");
if (Py_FinalizeEx() < 0) {
exit(120);
}
return 0;
}
При запуске получившегося исполняемого файла видно, что site
не загружен в Py_Initialize
(первая напечатанная строка False
) и загружается позже. Нам также нужно явно вызвать site.main()
для размещения пакетов сайта в sys.path
.