10 #include "dtoolbase.h" 13 #if PY_MAJOR_VERSION >= 3 18 #error IMPORT_MODULE must be defined when compiling ppython.cxx ! 21 #define _STRINGIFY(s) #s 22 #define STRINGIFY(s) _STRINGIFY(s) 23 #define IMPORT_MODULE_STR STRINGIFY(IMPORT_MODULE) 25 #if defined(_WIN32) && PY_MAJOR_VERSION >= 3 28 int wmain(
int argc,
wchar_t *argv[]) {
29 Py_SetProgramName(argv[0]);
31 #elif PY_MAJOR_VERSION >= 3 33 int main(
int argc,
char *mb_argv[]) {
34 wchar_t **argv =
new wchar_t*[argc + 1];
35 for (
int i = 0; i < argc; ++i) {
36 size_t len = mbstowcs(NULL, mb_argv[i], 0);
37 argv[i] =
new wchar_t[len + 1];
38 mbstowcs(argv[i], mb_argv[i], len);
44 Py_SetProgramName(argv[0]);
48 int main(
int argc,
char *argv[]) {
49 Py_SetProgramName(argv[0]);
55 #if PY_MAJOR_VERSION >= 3 57 wchar_t *path = _wgetenv(L
"PATH");
58 wchar_t *result = wcstok(path, L
";");
59 while (result != NULL) {
61 wchar_t *ppython = (
wchar_t*) malloc(wcslen(result) * 2 + 26);
62 wcscpy(ppython, result);
63 wcscat(ppython, L
"\\python.exe");
64 if (_wstat(ppython, &st) == 0) {
65 Py_SetPythonHome(result);
69 result = wcstok(NULL, L
";");
73 char *path = getenv(
"PATH");
74 char *result = strtok(path,
";");
75 while (result != NULL) {
77 char *ppython = (
char*) malloc(strlen(result) + 13);
78 strcpy(ppython, result);
79 strcat(ppython,
"\\ppython.exe");
80 if (stat(ppython, &st) == 0) {
81 Py_SetPythonHome(result);
85 result = strtok(NULL,
";");
94 fprintf(stderr,
"Python %s\\n%s\\n", Py_GetVersion(), Py_GetCopyright());
97 PySys_SetArgv(argc, argv);
100 PyObject* m = PyImport_ImportModule(IMPORT_MODULE_STR);