diff --git a/CMakeLists.txt b/CMakeLists.txt
index d059c0aa3cbb6a0a20b753b9f023cc07722a736e..2def4f3049a681aea118ef2ee2b75ee994895b86 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -226,6 +226,19 @@ endif()
 
 include(UnityBuildSettings)
 
+if(POETRY)
+    file(STRINGS ${PROJECT_BINARY_DIR}/.python_packages OGS_PYTHON_PACKAGES)
+    list(REMOVE_DUPLICATES OGS_PYTHON_PACKAGES)
+    # Hack for tespy requirement
+    if(${Python3_VERSION} VERSION_LESS 3.10)
+        set(_python_arg --python <3.9)
+    endif()
+    execute_process(
+        COMMAND ${_CMD_COMMAND} poetry add ${_python_arg} ${OGS_PYTHON_PACKAGES}
+        WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
+    )
+endif()
+
 file(WRITE ${PROJECT_BINARY_DIR}/disabled-tests.log "${DISABLED_TESTS_LOG}")
 unset(DISABLED_TESTS_LOG CACHE) # Don't write to CMakeCache.txt
 
diff --git a/ProcessLib/HeatTransportBHE/Tests.cmake b/ProcessLib/HeatTransportBHE/Tests.cmake
index 1014e8a7cab11029c70662e7d211c7ea6e71d9ac..36985ca2c2f7def69fda3603529f2b39d206c59e 100644
--- a/ProcessLib/HeatTransportBHE/Tests.cmake
+++ b/ProcessLib/HeatTransportBHE/Tests.cmake
@@ -92,7 +92,7 @@ if("${Python3_VERSION}" VERSION_LESS 3.9)
         WRAPPER time
         TESTER vtkdiff
         REQUIREMENTS OGS_USE_PYTHON AND NOT OGS_USE_MPI
-        PYTHON_PACKAGES "TESPy=0.3.2 --python \">=3.6,<3.9\""
+        PYTHON_PACKAGES "TESPy=0.3.2"
         DIFF_DATA
         3bhes_1U_ts_10_t_600.000000.vtu 3bhes_1U_ts_10_t_600.000000.vtu temperature_soil temperature_soil 1e-12 1e-13
         3bhes_1U_ts_10_t_600.000000.vtu 3bhes_1U_ts_10_t_600.000000.vtu temperature_BHE1 temperature_BHE1 1e-10 1e-13
diff --git a/scripts/cmake/PythonSetup.cmake b/scripts/cmake/PythonSetup.cmake
index cbc7f1e2b7c63bd1f4d186d7262b456ec6010d20..73c66c856f914f992dcd2ed4391b2480aa8e54b8 100644
--- a/scripts/cmake/PythonSetup.cmake
+++ b/scripts/cmake/PythonSetup.cmake
@@ -23,6 +23,12 @@ if(OGS_USE_POETRY)
         if(MSVC)
             set(Python3_EXECUTABLE ${Python3_ROOT_DIR}/Scripts/python.exe)
         endif()
+        file(WRITE ${PROJECT_BINARY_DIR}/.python_packages "")
+        if(OGS_BUILD_TESTING)
+            file(WRITE ${PROJECT_BINARY_DIR}/.python_packages
+                 "snakemake=${ogs.minimum_version.snakemake}\n"
+            )
+        endif()
     endif()
 endif()
 
@@ -53,13 +59,3 @@ set(LOCAL_VIRTUALENV_BIN_DIRS ${PROJECT_BINARY_DIR}/.venv/bin
                               ${PROJECT_BINARY_DIR}/.venv/Scripts CACHE INTERNAL
                                                                         ""
 )
-
-if(POETRY)
-    if(OGS_BUILD_TESTING)
-        list(APPEND PYTHON_PACKAGES snakemake=${ogs.minimum_version.snakemake})
-    endif()
-    execute_process(
-        COMMAND ${_CMD_COMMAND} poetry add ${PYTHON_PACKAGES}
-        WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
-    )
-endif()
diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake
index 8399b1a23283a2133de9aa7d49270fa7cd503b9b..b570decd8caa7d912cf15a640048ef2b71b06c3e 100644
--- a/scripts/cmake/test/AddTest.cmake
+++ b/scripts/cmake/test/AddTest.cmake
@@ -435,16 +435,11 @@ Use six arguments version of AddTest with absolute and relative tolerances"
 
     if(AddTest_PYTHON_PACKAGES)
         if(POETRY)
-            file(WRITE ${PROJECT_BINARY_DIR}/tmp_poetry_add.bat
-                 "poetry add ${AddTest_PYTHON_PACKAGES}"
+            string(REPLACE ";" "\n" PYTHON_PACKAGES
+                           "${AddTest_PYTHON_PACKAGES}"
             )
-            if(WIN32)
-                set(EXEC_CMD tmp_poetry_add.bat)
-            else()
-                set(EXEC_CMD ${BASH_TOOL_PATH} tmp_poetry_add.bat)
-            endif()
-            execute_process(
-                COMMAND ${EXEC_CMD} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
+            file(APPEND ${PROJECT_BINARY_DIR}/.python_packages
+                 ${PYTHON_PACKAGES}
             )
         else()
             message(
diff --git a/scripts/python/pyproject.in.toml b/scripts/python/pyproject.in.toml
index bb061069ef1f95fd81a82dc4ce5036d19fb612dc..0adfb1eeb9b51a59e67beb61ef7e21f89423aada 100644
--- a/scripts/python/pyproject.in.toml
+++ b/scripts/python/pyproject.in.toml
@@ -5,7 +5,7 @@ description = "CMake auto-generated"
 authors = [""]
 
 [tool.poetry.dependencies]
-python = "^@ogs.minimum_version.python@"
+python = ">=@ogs.minimum_version.python@"
 
 [tool.poetry.dev-dependencies]