diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp
index f9c14720486861a453bc5b624e145e3b160ff58d..0d542c996a5674771ebbe8c7e092531fa6aeb930 100644
--- a/Applications/ApplicationsLib/ProjectData.cpp
+++ b/Applications/ApplicationsLib/ProjectData.cpp
@@ -367,9 +367,6 @@ ProjectData::ProjectData(BaseLib::ConfigTree const& project_config,
         // Append to python's module search path
         auto py_path = py::module::import("sys").attr("path");
         py_path.attr("append")(script_directory);  // .prj or -s directory
-        // virtualenv
-        py_path.attr("append")(
-            CMakeInfoLib::CMakeInfo::python_virtualenv_sitepackages);
 
         auto const script_path =
             BaseLib::copyPathToFileName(*python_script, script_directory);
diff --git a/Applications/CLI/ogs_embedded_python.cpp b/Applications/CLI/ogs_embedded_python.cpp
index 1a16f5afb3d7efca129844d6a9f60bd610665ff7..dc7946f9d1ee7f6649fed28aad64893bd92fabe1 100644
--- a/Applications/CLI/ogs_embedded_python.cpp
+++ b/Applications/CLI/ogs_embedded_python.cpp
@@ -10,9 +10,10 @@
 
 #include "ogs_embedded_python.h"
 
-#include <algorithm>
 #include <pybind11/embed.h>
 
+#include <algorithm>
+
 #include "BaseLib/Logging.h"
 #include "ProcessLib/BoundaryConditionAndSourceTerm/Python/BHEInflowPythonBoundaryConditionModule.h"
 #include "ProcessLib/BoundaryConditionAndSourceTerm/Python/PythonBoundaryConditionModule.h"
@@ -25,6 +26,19 @@ PYBIND11_EMBEDDED_MODULE(OpenGeoSys, m)
     ProcessLib::pythonBindBoundaryCondition(m);
     ProcessLib::bheInflowpythonBindBoundaryCondition(m);
     ProcessLib::SourceTerms::Python::pythonBindSourceTerm(m);
+
+    // Check for activated virtual environment and add it to sys.path
+    pybind11::exec(R"(
+        import os
+        import sys
+        if "VIRTUAL_ENV" in os.environ:
+            venv_site_packages_path = f"{os.environ['VIRTUAL_ENV']}/lib/python{sys.version_info.major}.{sys.version_info.minor}/site-packages"
+            if os.path.exists(venv_site_packages_path):
+                print(
+                    f"Virtual environment detected, adding {venv_site_packages_path} to sys.path."
+                )
+                sys.path.insert(0, venv_site_packages_path)
+    )");
 }
 
 #ifndef OGS_BUILD_SHARED_LIBS
diff --git a/InfoLib/CMakeInfo.cpp.in b/InfoLib/CMakeInfo.cpp.in
index 2a600268fc131b7d8742bbfb57587344cc967658..a0b292ed959abfe66612eb07194c66ff365f02f3 100644
--- a/InfoLib/CMakeInfo.cpp.in
+++ b/InfoLib/CMakeInfo.cpp.in
@@ -17,7 +17,6 @@ namespace CMakeInfoLib
 
 namespace CMakeInfo
 {
-const std::string python_virtualenv_sitepackages("@Python_SITEARCH_NATIVE@");
 const std::string cmake_args("@CMAKE_ARGS_ESCAPED@");
 }  // namespace CMakeInfo
 }  // namespace CMakeInfoLib
diff --git a/InfoLib/CMakeInfo.h b/InfoLib/CMakeInfo.h
index db27c0236d07aa1226d49255d596c940d2f12c78..93b335821d1153f7e9c33169b7fe1caeadeb662a 100644
--- a/InfoLib/CMakeInfo.h
+++ b/InfoLib/CMakeInfo.h
@@ -21,7 +21,6 @@ namespace CMakeInfoLib
 
 namespace CMakeInfo
 {
-extern CMAKEINFOLIB_EXPORT const std::string python_virtualenv_sitepackages;
 extern CMAKEINFOLIB_EXPORT const std::string cmake_args;
 }  // namespace CMakeInfo
 }  // namespace CMakeInfoLib