feat: Use uv for Python Environment Management to Improve Install Speed
Description:
This PR proposes switching the Python environment manager to uv to improve installation speed and overall developer experience. uv provides faster package installations and simplifies the environment setup process, reducing time spent on configuration.
Changes Introduced:
- Environment Manager Update: Replaced the existing Python environment manager with uv.
- Improved Installation Speed: Leveraging uv for faster installation times, particularly when managing numerous dependencies.
- Simplified Environment Setup: Easier and more efficient setup for developers.
Rationale:
- Performance: uv offers better performance in dependency resolution and package installation, reducing overhead.
- Consistency: Provides a consistent development environment across machines, minimizing dependency conflicts.
- Developer Efficiency: Quicker environment setup improves productivity for contributors.
Tests Performed:
- Tested installation on macOS using uv.
- Confirmed that all dependencies are installed and the project runs correctly.
Future Considerations:
- Documentation updates to explain the use of uv for new contributors.
Very cool! I will add a $200 retrospective bounty as this is great.
Two things:
- Can you add
uvas a prerequisite in the README? - Is it possible to keep the
exocommand that we had previously? i.e. being able to runexoinstead ofuv run exo
Thank you for the kind words and the bounty offer!
I've addressed the two points you raised:
-
Added
uvas a prerequisite: The README has been updated to reflect uv as a required tool for environment setup. -
Adjusted to keep the
exocommand: I've changed the process to useuv tool install .instead ofuv run exo, ensuring theexocommand remains available, preserving the original behavior.
Please let me know if you'd like any further adjustments or improvements!
We have quite a few big PR's pending that will get merged in the next few weeks and this will cause a lot of conflicts so will merge this once they are merged.
Can you fix conflicts please @Yvictor
Can you fix conflicts please @Yvictor
I’ve resolved the conflicts. Please check if everything looks good. Let me know if there’s anything else needed.
this will not be merged? :(