diff --git a/Tests/Examples/CMakeLists.txt b/Tests/Examples/CMakeLists.txt
index 79c876e6431f906806aba4deb96c923e1fa3e999..7b21443e43a7af066a1ec89cb2e785ed9b48ea13 100644
--- a/Tests/Examples/CMakeLists.txt
+++ b/Tests/Examples/CMakeLists.txt
@@ -37,7 +37,7 @@ endmacro()
 set(launch_env COMMAND ${CMAKE_COMMAND} -E env)
 set(launch_py
     BA_DATA_DIR=${EXAMPLES_DATA_DIR}
-    PYTHONPATH=${CMAKE_BINARY_DIR}/lib
+    PYTHONPATH=${BA_PY_SOURCE_OUTPUT_DIR}
     ${Python3_EXECUTABLE})
 
 # Register example that plots but has no persistence test.
diff --git a/Tests/Py/Fit/CMakeLists.txt b/Tests/Py/Fit/CMakeLists.txt
index e9c824b092ca540549079f535a4692ce45c7f987..1b6ef37a0c4dd2d93f6b353942d2b8419eed44b3 100644
--- a/Tests/Py/Fit/CMakeLists.txt
+++ b/Tests/Py/Fit/CMakeLists.txt
@@ -14,6 +14,6 @@ foreach(_test ${tests})
     configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${_test} ${OUTPUT_DIR}/${_test} COPYONLY)
     add_test(NAME Py.Fit.${_test}
         WORKING_DIRECTORY ${OUTPUT_DIR}
-        COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+        COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${BA_PY_SOURCE_OUTPUT_DIR}
         ${Python3_EXECUTABLE} ${OUTPUT_DIR}/${_test})
 endforeach()
diff --git a/Tests/Py/Functional/CMakeLists.txt b/Tests/Py/Functional/CMakeLists.txt
index 949fd2e25dfd1ea2b2458f2495f98873221d3a1d..3f97f079fc049424952a67d9ef0d189c1eb66fa7 100644
--- a/Tests/Py/Functional/CMakeLists.txt
+++ b/Tests/Py/Functional/CMakeLists.txt
@@ -16,6 +16,6 @@ foreach(_test ${tests})
     configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${_test} ${OUTPUT_DIR}/${_test} COPYONLY)
     add_test(NAME Py.Functional.${_test}
         WORKING_DIRECTORY ${OUTPUT_DIR}
-        COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+        COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${BA_PY_SOURCE_OUTPUT_DIR}
         ${Python3_EXECUTABLE} ${OUTPUT_DIR}/${_test})
 endforeach()
diff --git a/Tests/Py/Unit/CMakeLists.txt b/Tests/Py/Unit/CMakeLists.txt
index 084c057288d616ee07515192fea633239eb3dc0a..867d742eba805984f9324d1743da67084b2da255 100644
--- a/Tests/Py/Unit/CMakeLists.txt
+++ b/Tests/Py/Unit/CMakeLists.txt
@@ -14,6 +14,6 @@ foreach(_test ${tests})
     configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${_test} ${OUTPUT_DIR}/${_test} COPYONLY)
     add_test(NAME Py.Unit.${_test}
         WORKING_DIRECTORY ${OUTPUT_DIR}
-        COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
+        COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${BA_PY_SOURCE_OUTPUT_DIR}
         ${Python3_EXECUTABLE} ${OUTPUT_DIR}/${_test})
 endforeach()
diff --git a/Tests/Suite/Py/Check.cpp b/Tests/Suite/Py/Check.cpp
index 12e3c60aefa2fe8158cf9046fc95f621834b2bf6..20604c914e84a13569c898e0a339e7be55cfa87e 100644
--- a/Tests/Suite/Py/Check.cpp
+++ b/Tests/Suite/Py/Check.cpp
@@ -46,12 +46,12 @@ std::vector<double> domainData(const std::string& test_name, const ISimulation&
 
     // Run Python script
 #ifndef _WIN32
-    const std::string sys_command = std::string("PYTHONPATH=") + BABuild::buildLibDir() + " "
+    const std::string sys_command = std::string("PYTHONPATH=") + BABuild::pythonPackDir() + " "
                                     + std::string("NOSHOW=TRUE") + " " + BABuild::pythonExecutable()
                                     + " -B " + pyscript;
 #else
-    const std::string sys_command = std::string("set PYTHONPATH=") + BABuild::buildLibDir() + " & "
-                                    + std::string("set NOSHOW=TRUE") + " & \""
+    const std::string sys_command = std::string("set PYTHONPATH=") + BABuild::pythonPackDir()
+                                    + " & " + std::string("set NOSHOW=TRUE") + " & \""
                                     + BABuild::pythonExecutable() + "\" -B " + pyscript;
 #endif
     std::cout << "- system call: " << sys_command << std::endl;