From 7dfce2a197cecd42cb524a7370c77e3371041bde Mon Sep 17 00:00:00 2001 From: Masen Furer Date: Wed, 21 Jan 2026 15:55:39 -0800 Subject: [PATCH] Run external servers with `sys.executable -m` This ensures that if the environment path is not correct, we should still be able to resolve the granian, gunicorn, and uvicorn modules when executing the server in a subprocess. --- reflex/utils/exec.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/reflex/utils/exec.py b/reflex/utils/exec.py index ac6f720cda8..ac70d62ea3b 100644 --- a/reflex/utils/exec.py +++ b/reflex/utils/exec.py @@ -612,6 +612,8 @@ def run_uvicorn_backend_prod(host: str, port: int, loglevel: LogLevel): if constants.IS_WINDOWS: command = [ + sys.executable, + "-m", "uvicorn", *("--host", host), *("--port", str(port)), @@ -627,6 +629,8 @@ def run_uvicorn_backend_prod(host: str, port: int, loglevel: LogLevel): # Our default args, then env args (env args win on conflicts) command = [ + sys.executable, + "-m", "gunicorn", "--preload", *("--worker-class", "uvicorn.workers.UvicornH11Worker"), @@ -663,6 +667,8 @@ def run_granian_backend_prod(host: str, port: int, loglevel: LogLevel): from reflex.utils import processes command = [ + sys.executable, + "-m", "granian", *("--log-level", "critical"), *("--host", host),