From 76d46ec97db82fdf3a71ffa2ee5b2d8bac5a923f Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Mon, 6 Jan 2025 22:02:44 +0700 Subject: [PATCH] #4457 block numpy import if not needed --- xpra/scripts/main.py | 15 +++++++++++++++ xpra/scripts/server.py | 2 ++ 2 files changed, 17 insertions(+) diff --git a/xpra/scripts/main.py b/xpra/scripts/main.py index 9baaa4baba..cb045dc382 100755 --- a/xpra/scripts/main.py +++ b/xpra/scripts/main.py @@ -2116,6 +2116,21 @@ def enforce_client_features() -> None: "network_listener": "xpra.client.mixins.network_listener", "encoding": "xpra.client.mixins.encodings", }) + may_block_numpy() + + +def may_block_numpy() -> None: + if envbool("XPRA_MAY_BLOCK_NUMPY", True) and "numpy" not in sys.modules: + reason = "" + try: + from xpra.codecs.nvidia.util import has_nvidia_hardware + if not has_nvidia_hardware(): + reason = "no nvidia hardware" + except ImportError: + reason = "no nvidia codecs" + if reason: + get_logger().debug(f"{reason}, blocking `numpy` import") + sys.modules["numpy"] = None def make_client(opts): diff --git a/xpra/scripts/server.py b/xpra/scripts/server.py index b75b6f7cba..4e97b4d682 100644 --- a/xpra/scripts/server.py +++ b/xpra/scripts/server.py @@ -29,6 +29,7 @@ make_progress_process, load_pid, X11_SOCKET_DIR, + may_block_numpy, ) from xpra.scripts.config import ( InitException, InitInfo, InitExit, @@ -359,6 +360,7 @@ def enforce_server_features() -> None: "windows": "xpra.server.mixins.window,xpra.server.source.windows", "rfb": "xpra.net.rfb,xpra.server.rfb", }) + may_block_numpy() def make_monitor_server():