Skip to content

Adds initial support for UV-based installation#4739

Merged
myurasov-nv merged 14 commits intoisaac-sim:developfrom
myurasov-nv:my-uv-support
Feb 27, 2026
Merged

Adds initial support for UV-based installation#4739
myurasov-nv merged 14 commits intoisaac-sim:developfrom
myurasov-nv:my-uv-support

Conversation

@myurasov-nv
Copy link
Contributor

@myurasov-nv myurasov-nv commented Feb 26, 2026

Description

This adds initial support for installing Isaac Lab and it's sub-projects via UV.

After discussion with @kellyguo11 we have decided that since we're about to code-freeze, it makes sense to split UV support into 2 phases:

Phase 1:

  • Add support to install Isaac Lab' and its sub-projects as following:
uv pip install isaaclab
uv pip install "isaaclab[assets/etc]"
uv pip install "isaaclab[all]"
# also isaaclab[isaacsim] is preserved
  • Add support for Isac Lab sub-packages installation via CLI:
./isaaclab.sh -h
...
  -i [INSTALL], --install [INSTALL]
                        Install Isaac Lab sub-packages and RL frameworks.
                        Accepts a comma-separated list of sub-package names, one of the RL frameworks, or a special value.
                        
                        Sub-packages: assets, physx, contrib, mimic, newton, rl, tasks, teleop.
                        RL frameworks: rl_games, rsl_rl, sb3, skrl, robomimic.
                        
                        Passing an RL framework name installs all sub-packages + that framework.
                        
                        Special values:
                        - all  - Install all sub-packages + all RL frameworks (default).
                        - none - Install only the core 'isaaclab' package.
                        - <empty> (-i or --install without value) - Install all sub-packages + all RL frameworks.
...

Phase 2:

  • We can move from setuptools to pyproject.toml based dependency management.
  • Create and commit uv.lock files that are pinning dependencies to verified and tested state.
  • Move CLI to use UV as a backend to synchronize approaches.
  • Enable ability to install all sub-projects ad "editables" with a single uv command.
  • Drop pip installation route.

This approach preserves proven setuptools-based installation for now and allows to properly test new pyproject.toml-based approach when code and Isaac Sim 6.0 are stable.

Type of change

  • New feature (non-breaking change which adds functionality)
  • Documentation update

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • [NA] I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@github-actions github-actions bot added documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team infrastructure labels Feb 26, 2026
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 26, 2026

Greptile Summary

This PR adds Phase 1 UV support for Isaac Lab installation while preserving the existing setuptools-based approach. The implementation enables UV-based installation of Isaac Lab and its 8 sub-packages through a new extras_require mechanism.

Key Changes:

  • Adds UV index configuration in pyproject.toml for automatic pypi.nvidia.com discovery
  • Introduces extras_require in setup.py supporting [isaacsim], [all], and individual sub-package extras
  • Updates Newton dependency from commit hashes to version tag v0.2.3 for better reproducibility
  • Removes Docker cache mounts to fix concurrent CI build issues
  • Provides comprehensive documentation with tabbed UV/pip examples

Issues Found:

  • Documentation shows outdated version 3.0.0 instead of current 4.2.0
  • Version specification is inconsistent between UV and pip examples in docs

Confidence Score: 4/5

  • This PR is safe to merge after fixing the version number in documentation
  • The implementation is well-structured and the changes are straightforward. The UV support is additive and doesn't break existing pip-based installations. The Newton version pinning improves reproducibility. The only issue is a documentation error showing an outdated version number (3.0.0 vs 4.2.0), which should be corrected before merging to avoid user confusion. The Docker changes are improvements to fix CI issues. All code changes follow proper patterns and are internally consistent.
  • Pay attention to docs/source/setup/installation/isaaclab_pip_installation.rst - version number needs updating to 4.2.0

Important Files Changed

Filename Overview
pyproject.toml Adds UV index configuration for pypi.nvidia.com to support UV-based installation without requiring --extra-index-url flag
source/isaaclab/setup.py Adds extras_require for Isaac Sim and all 8 Isaac Lab sub-packages, updates Newton dependency to v0.2.3 tag
docs/source/setup/installation/isaaclab_pip_installation.rst Rewrites installation docs with tabbed UV/pip interface and extras table; contains outdated version number (3.0.0 vs actual 4.2.0)

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[User runs uv pip install] --> B{Installation Type?}
    B -->|isaaclab only| C[Install base isaaclab package]
    B -->|isaaclab isaacsim| D[Check pypi.nvidia.com index]
    B -->|isaaclab extras| E[Install isaaclab + subpackages]
    
    D --> F[UV reads pyproject.toml]
    F --> G[Auto-discovers isaacsim from pypi.nvidia.com]
    G --> H[Install isaacsim==5.1.0]
    
    E --> I{Which extras?}
    I -->|assets/physx/contrib/etc| J[Install specific subpackages]
    I -->|all| K[Install all 8 subpackages]
    
    C --> L[Dependencies resolved via setup.py]
    H --> L
    J --> L
    K --> L
    
    L --> M[Install core dependencies]
    M --> N[Newton v0.2.3 from git]
    M --> O[PyTorch from cu128 index]
    M --> P[Other Python packages]
Loading

Last reviewed commit: 25d23a7

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

5 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Copy link
Contributor

@kellyguo11 kellyguo11 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you think we are ready to move UV out of experimental in the docs?

myurasov-nv and others added 3 commits February 26, 2026 23:54
Co-authored-by: Kelly Guo <kellyg@nvidia.com>
Signed-off-by: myurasov-nv <168484206+myurasov-nv@users.noreply.github.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com>
Signed-off-by: myurasov-nv <168484206+myurasov-nv@users.noreply.github.com>
@myurasov-nv
Copy link
Contributor Author

do you think we are ready to move UV out of experimental in the docs?

I think so, uv seems to work just fine for envs and as a replacement for pip install.

@myurasov-nv myurasov-nv merged commit dd8dbcc into isaac-sim:develop Feb 27, 2026
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation infrastructure isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants