aboutsummaryrefslogtreecommitdiffstats
path: root/library/python
diff options
context:
space:
mode:
Diffstat (limited to 'library/python')
-rw-r--r--library/python/runtime_py3/main/main.c4
-rw-r--r--library/python/runtime_py3/main/venv.cpp6
2 files changed, 10 insertions, 0 deletions
diff --git a/library/python/runtime_py3/main/main.c b/library/python/runtime_py3/main/main.c
index 3159800615..c2c90a3cf6 100644
--- a/library/python/runtime_py3/main/main.c
+++ b/library/python/runtime_py3/main/main.c
@@ -7,6 +7,7 @@
void Py_InitArgcArgv(int argc, wchar_t **argv);
char* GetPyMain();
+int IsYaIdeVenv();
static const char* env_entry_point = "Y_PYTHON_ENTRY_POINT";
static const char* env_bytes_warning = "Y_PYTHON_BYTES_WARNING";
@@ -74,6 +75,9 @@ static int RunModule(const char *modname)
}
static int pymain(int argc, char** argv) {
+ if (IsYaIdeVenv()) {
+ return Py_BytesMain(argc, argv);
+ }
PyStatus status = _PyRuntime_Initialize();
if (PyStatus_Exception(status)) {
Py_ExitStatusException(status);
diff --git a/library/python/runtime_py3/main/venv.cpp b/library/python/runtime_py3/main/venv.cpp
new file mode 100644
index 0000000000..b26611b918
--- /dev/null
+++ b/library/python/runtime_py3/main/venv.cpp
@@ -0,0 +1,6 @@
+#include <library/cpp/resource/resource.h>
+
+extern "C" int IsYaIdeVenv() {
+ TString dummy;
+ return NResource::FindExact("YA_IDE_VENV", &dummy);
+}