{"record":{"id":"d4525b22ae42bf4d","repo":"Genesis-Embodied-AI/genesis-world","slug":"python-module-uipc-is-required-by-ipccoupler-but","errorCode":null,"errorMessage":"Python module 'uipc' is required by IPCCoupler but is not installed. Please install it via `pip install pyuipc`.","messagePattern":"Python module 'uipc' is required by IPCCoupler but is not installed\\. Please install it via `pip install pyuipc`\\.","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"genesis/engine/couplers/ipc_coupler/coupler.py","lineNumber":113,"sourceCode":"\n    This coupler manages the communication between Genesis solvers and the IPC system,\n    including rigid bodies (as ABD objects) and FEM bodies in a unified contact framework.\n    \"\"\"\n\n    def __init__(self, simulator: \"Simulator\", options: IPCCouplerOptions) -> None:\n        \"\"\"\n        Initialize IPC Coupler.\n\n        Parameters\n        ----------\n        simulator : Simulator\n            The simulator containing all solvers\n        options : IPCCouplerOptions\n            IPC configuration options\n        \"\"\"\n        # Check if uipc is available\n        if not UIPC_AVAILABLE:\n            raise ImportError(\n                \"Python module 'uipc' is required by IPCCoupler but is not installed. Please install it via \"\n                \"`pip install pyuipc`.\"\n            )\n\n        self.sim = simulator\n        self.options = options\n\n        # Define some proxies for convenience\n        self.rigid_solver: \"RigidSolver\" = self.sim.rigid_solver\n        self.fem_solver: \"FEMSolver\" = self.sim.fem_solver\n\n        # ==== IPC System Infrastructure ====\n        # The soft-constraint strengths coupling a rigid body to its Genesis pose, 'constraint_strength_translation'\n        # and 'constraint_strength_rotation', are scaled by the inverse square of the substep interval to reach the\n        # units the IPC world expects. That interval is only known once every solver has derived its substeps, so the\n        # initialization of both of them, and of the IPC scene, is postponed to build time.\n        self._constraint_strength_translation_scaled: float | None = None\n        self._constraint_strength_rotation_scaled: float | None = None","sourceCodeStart":95,"sourceCodeEnd":131,"githubUrl":"https://github.com/Genesis-Embodied-AI/genesis-world/blob/56e4aa5d82bdb83f2e532e4cc364cb69527acb06/genesis/engine/couplers/ipc_coupler/coupler.py#L95-L131","documentation":"IPCCoupler (the IPC-based rigid-deformable coupler) delegates core geometry and collision computations to the external `uipc` Python package. At init it checks the UIPC_AVAILABLE flag set by a module-level import probe; if pyuipc is absent it refuses to construct. The simulator core works without it, only this coupler requires it.","triggerScenarios":"Constructing `gs.couplers.IPCCoupler(sim, options)` (or letting a scene build a hybrid entity with default IPC coupling) in an environment where `pip install pyuipc` was never executed.","commonSituations":"Running hybrid rigid-soft examples (e.g. examples coupling a rigid robot with deformables) on a machine that only installed the base genesis requirements; CI images trimmed to core deps; a fresh venv after cloning.","solutions":["`pip install pyuipc` in the active environment.","If you do not need IPC coupling, remove the IPCCoupler / switch the hybrid material to not use IPC (`use_default_coupling=False` with your own association functions, or a different coupler).","Verify with `python -c \"import uipc\"` that the install landed in the same interpreter Genesis runs under."],"exampleFix":"# before\ncoupler = gs.couplers.IPCCoupler(sim)  # ImportError\n\n# after\npip install pyuipc\ncoupler = gs.couplers.IPCCoupler(sim)","handlingStrategy":"validation","validationCode":"from genesis.utils import misc  # or check importability directly\nimport importlib.util\nif importlib.util.find_spec(\"uipc\") is None:\n    raise SystemExit(\"IPCCoupler requires pyuipc: pip install pyuipc\")","typeGuard":null,"tryCatchPattern":"try:\n    coupler = gs.couplers.IPCCoupler(sim)\nexcept ImportError as e:\n    if \"pyuipc\" in str(e):\n        subprocess.check_call([sys.executable, \"-m\", \"pip\", \"install\", \"pyuipc\"])\n    raise","preventionTips":["Declare pyuipc in requirements when using hybrid/IPC features.","Gate IPC-dependent code paths behind a find_spec('uipc') check so the rest of the app still runs."],"tags":["python","genesis","missing-dependency","ipc-coupling","installation"],"backgroundTag":"missing-dependency","analyzedSha":"56e4aa5d82bdb83f2e532e4cc364cb69527acb06","analyzedAt":"2026-08-28T15:15:07.922Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}