From 7c9a67630ebec317c2317b225119bf69a60a8c82 Mon Sep 17 00:00:00 2001 From: Pepijn Date: Wed, 8 Apr 2026 21:52:03 +0200 Subject: [PATCH] fix(envs): default use_async_envs=False in create_envs and make_env Tests that call make_env(n_envs=2) without passing use_async_envs were getting AsyncVectorEnv, whose forked workers can't resolve gym namespaces registered at runtime. Default to False (sync) so existing tests pass. lerobot_eval.py explicitly passes cfg.eval.use_async_envs, so the CLI async behaviour (controlled by EvalConfig.use_async_envs) is unchanged. Co-Authored-By: Claude Sonnet 4.6 --- src/lerobot/envs/configs.py | 6 +++--- src/lerobot/envs/factory.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lerobot/envs/configs.py b/src/lerobot/envs/configs.py index c9c43757d..af5bda33f 100644 --- a/src/lerobot/envs/configs.py +++ b/src/lerobot/envs/configs.py @@ -82,7 +82,7 @@ class EnvConfig(draccus.ChoiceRegistry, abc.ABC): def create_envs( self, n_envs: int, - use_async_envs: bool = True, + use_async_envs: bool = False, ) -> dict[str, dict[int, gym.vector.VectorEnv]]: """Create {suite: {task_id: VectorEnv}}. @@ -417,7 +417,7 @@ class LiberoEnv(EnvConfig): kwargs["task_ids"] = self.task_ids return kwargs - def create_envs(self, n_envs: int, use_async_envs: bool = True): + def create_envs(self, n_envs: int, use_async_envs: bool = False): from lerobot.envs.libero import create_libero_envs if self.task is None: @@ -486,7 +486,7 @@ class MetaworldEnv(EnvConfig): "render_mode": self.render_mode, } - def create_envs(self, n_envs: int, use_async_envs: bool = True): + def create_envs(self, n_envs: int, use_async_envs: bool = False): from lerobot.envs.metaworld import create_metaworld_envs if self.task is None: diff --git a/src/lerobot/envs/factory.py b/src/lerobot/envs/factory.py index d349fef49..40d5425cc 100644 --- a/src/lerobot/envs/factory.py +++ b/src/lerobot/envs/factory.py @@ -58,7 +58,7 @@ def make_env_pre_post_processors( def make_env( cfg: EnvConfig | str, n_envs: int = 1, - use_async_envs: bool = True, + use_async_envs: bool = False, hub_cache_dir: str | None = None, trust_remote_code: bool = False, ) -> dict[str, dict[int, gym.vector.VectorEnv]]: