diff --git a/webservice/webservice.py b/webservice/webservice.py
index 115e899f6f1280572acf8732b2077c2b43b914e7..d1a6cafc934f4a6f0d4028abd3e8aa0fd649c6c7 100644
--- a/webservice/webservice.py
+++ b/webservice/webservice.py
@@ -1536,6 +1536,14 @@ def main(argv: Optional[List[str]] = None):
         format=fmt
     )
 
+    # Ensure that subprocesses (to launch calibration) are launched with the
+    # venv where this is installed, even if it was not activated in a shell.
+    cmd_path = os.environ.get('PATH', os.defpath).split(os.pathsep)
+    my_env_bin = os.path.dirname(sys.executable)
+    if my_env_bin not in cmd_path:
+        logging.info("Adding %s to PATH", my_env_bin)
+        os.environ['PATH'] = os.pathsep.join([my_env_bin] + cmd_path)
+
     # Launch the ZMQ server to handle requests for calibration
     server = ActionsServer(config, mode)
     loop = asyncio.get_event_loop()