diff options
author | kuzmich321 <kuzmich321@yandex-team.com> | 2025-02-28 10:50:51 +0300 |
---|---|---|
committer | kuzmich321 <kuzmich321@yandex-team.com> | 2025-02-28 11:56:32 +0300 |
commit | 6a9a436309f31f967622304be9fb9f793b38e9cf (patch) | |
tree | 18eada549679a63e5e89b763be236e1775d446ce /library/python/runtime_py3/main/main.c | |
parent | a4ebae0970f4e2748cb954f4fd56b40b42841809 (diff) | |
download | ydb-6a9a436309f31f967622304be9fb9f793b38e9cf.tar.gz |
fix arcadia py3 runtime for win due to encoding
[Вот так](HIDDEN_URL делает нативный питон
[Репродьюсер](HIDDEN_URL
Как оно выглядит [ДО](HIDDEN_URL и [ПОСЛЕ](HIDDEN_URL, а вот так [нативный](HIDDEN_URL
commit_hash:cdce69c28e699d42f25e43f5d6efb214c8227024
Diffstat (limited to 'library/python/runtime_py3/main/main.c')
-rw-r--r-- | library/python/runtime_py3/main/main.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/library/python/runtime_py3/main/main.c b/library/python/runtime_py3/main/main.c index 0c4aa23013..21742d263c 100644 --- a/library/python/runtime_py3/main/main.c +++ b/library/python/runtime_py3/main/main.c @@ -74,11 +74,20 @@ static int RunModule(const char* modname) return 0; } -static int pymain(int argc, char** argv) { +#ifdef MS_WINDOWS +static int pymain(int argc, wchar_t** argv) +#else +static int pymain(int argc, char** argv) +#endif +{ PyStatus status; if (IsYaIdeVenv()) { +#ifdef MS_WINDOWS + return Py_Main(argc, argv); +#else return Py_BytesMain(argc, argv); +#endif } status = _PyRuntime_Initialize(); @@ -115,12 +124,20 @@ static int pymain(int argc, char** argv) { } if (argc > 0 && argv) { +#ifdef MS_WINDOWS + status = PyConfig_SetString(&config, &config.program_name, argv[0]); +#else status = PyConfig_SetBytesString(&config, &config.program_name, argv[0]); +#endif if (PyStatus_Exception(status)) { goto error; } +#ifdef MS_WINDOWS + status = PyConfig_SetArgv(&config, argc, argv); +#else status = PyConfig_SetBytesArgv(&config, argc, argv); +#endif if (PyStatus_Exception(status)) { goto error; } @@ -155,7 +172,11 @@ static int pymain(int argc, char** argv) { } if (entry_point_copy && !strcmp(entry_point_copy, main_entry_point)) { +#ifdef MS_WINDOWS + sts = Py_Main(argc, argv); +#else sts = Py_BytesMain(argc, argv); +#endif free(entry_point_copy); return sts; } @@ -217,8 +238,16 @@ error: return sts; } +#ifdef MS_WINDOWS +int (*mainptr)(int argc, wchar_t** argv) = pymain; + +int wmain(int argc, wchar_t** argv) { + return mainptr(argc, argv); +} +#else int (*mainptr)(int argc, char** argv) = pymain; int main(int argc, char** argv) { return mainptr(argc, argv); } +#endif |