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);