#include #include #include using namespace std; int main(int argc, char *argv[]) { wchar_t * pathEnv = _wgetenv(L"PATH"); wchar_t *program = Py_DecodeLocale(argv[0], NULL); if (program == NULL) { fprintf(stderr, "Fatal error: cannot decode argv[0]\n"); exit(1); } // Works, sets correct environment Py_SetPythonHome(L"C:\\Users\\weber\\AppData\\Local\\conda\\conda\\envs\\libertem\\"); // Breaks, doesn't find Python base packages // venv is based on a conda env //Py_SetPythonHome(L"C:\\Users\\weber\\Documents\\LiberTEM\\test-venv\\"); // Breaks, doesn't find Python base packages // venv is based on system-wide Python C:\PROGRAM FILES\PYTHON36 //Py_SetPythonHome(L"C:\\Users\\weber\\Documents\\LiberTEM\\test-venv2\\"); // Works, is default if Py_SetPythonHome() is not called // This is the Python installation the binary is compiled against //Py_SetPythonHome(L"C:\\Program Files\\Python36\\"); // No impact on path setup //Py_SetProgramName(L"C:\\Users\\weber\\Documents\\LiberTEM\\test-venv\\Scripts\\python.exe"); // No impact on path setup //Py_SetProgramName(L"C:\\Users\\weber\\AppData\\Local\\conda\\conda\\envs\\libertem\\python.exe"); // No impact on path setup, recommended in embedding example //Py_SetProgramName(program); /* optional but recommended */ cout << "Initializing... "; Py_Initialize(); cout << "initalized.\n"; PyRun_SimpleString( "import site\n" "import sys\n" "print('sys.version: ', sys.version)\n" "print('sys.path: ', sys.path)\n" "print('sys.prefix: ', sys.prefix)\n" "print('sys.exec_prefix: ', sys.exec_prefix)\n" "print('sys.base_prefix: ', sys.base_prefix)\n" "print('sys.base_exec_prefix: ', sys.base_exec_prefix)\n" ); if (Py_FinalizeEx() < 0) { exit(120); } PyMem_RawFree(program); return 0; }