diff --git a/webservice/webservice.py b/webservice/webservice.py
index 0652255f006d1e2d5c91f6eeb525d07f428e5be9..499e8061f3157c3d4033e8aa42a4f9336cea8e35 100644
--- a/webservice/webservice.py
+++ b/webservice/webservice.py
@@ -1522,6 +1522,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()