diff --git a/cmake/ManageCodegenVenv.py b/cmake/ManageCodegenVenv.py
index 33301ac83e936298dc2c71c0f50bac29e517798d..39701fc35b4f05349830acc38bfe0d42be7c94c8 100644
--- a/cmake/ManageCodegenVenv.py
+++ b/cmake/ManageCodegenVenv.py
@@ -18,7 +18,7 @@ class VenvState:
     main_requirements_file: str | None = None
     initialized: bool = False
 
-    user_requirements: list[str] = field(default_factory=list)
+    user_requirements: list[list[str]] = field(default_factory=list)
     user_requirements_hash: str | None = None
 
     @property
@@ -95,8 +95,7 @@ def action_require(args):
         if not state.initialized:
             raise RuntimeError("Virtual environment is not initialized.")
 
-        for req in args.requirements:
-            state.user_requirements.append(req)
+        state.user_requirements.append(list(args.requirements))
 
 
 def action_populate(args):
@@ -105,7 +104,7 @@ def action_populate(args):
     with VenvState.lock(statefile) as state:
         h = hashlib.sha256()
         for req in state.user_requirements:
-            h.update(bytes(req, encoding="utf8"))
+            h.update(bytes(";".join(str(r) for r in req), encoding="utf8"))
         digest = h.hexdigest()
 
         if digest != state.user_requirements_hash:
@@ -119,7 +118,7 @@ def action_populate(args):
 
             pip_args = [str(state.venv_python), "-m", "pip", "install"]
             for req in state.user_requirements:
-                install_args = pip_args.copy() + [req]
+                install_args = pip_args.copy() + req
                 subprocess.run(install_args).check_returncode()
 
         state.user_requirements_hash = digest
diff --git a/cmake/WalberlaCodegen.cmake b/cmake/WalberlaCodegen.cmake
index ceafb3eb8497b77a9477bb58a392a1750d51d4e4..595f8678e224a57fff2d0a705058d1370fe57562 100644
--- a/cmake/WalberlaCodegen.cmake
+++ b/cmake/WalberlaCodegen.cmake
@@ -120,6 +120,7 @@ function(walberla_codegen_venv_require)
         COMMAND
             $CACHE{_WALBERLA_CODEGEN_VENV_INVOKE_MANAGER}
             require
+            --
             ${ARGV}
         RESULT_VARIABLE _lastResult
     )