scoop-uv 0.2.7

Scoop up your Python envs โ€” pyenv-style workflow powered by uv
Documentation

๐Ÿจ scoop

โš ๏ธ Work in Progress โ€” Under active development. API may change.

One scoop, endless envs โ€” pyenv-style Python environment manager powered by uv

CI Crates.io Downloads docs.rs

Security Coverage MSRV License Dependencies

Stars Forks Issues PRs Contributors

Last Commit Commit Activity Repo Size Top Language

Platform Rust Powered by uv Maintained PRs Welcome


What is scoop? ๐Ÿจ

scoop scoops up uv's blazing speed โ€” centralizing all your Python virtual environments in one place.

๐Ÿจ Like an ice cream parlor โ€” all flavors (envs) in one freezer (~/.scoop/), served instantly with a single scoop. ๐Ÿจ is our signature!

Problem scoop Solution
.venv scattered across projects ~/.scoop/virtualenvs/ centralized
Manual source .venv/bin/activate Auto-activate on directory entry
pyenv-virtualenv is slow uv-powered, 100x+ faster

Installation ๐Ÿจ

Prerequisites

Dependency Install Why
uv curl -LsSf https://astral.sh/uv/install.sh | sh Python installation backend
Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Build from source

Install scoop

cargo install scoop-uv

Cargo installs binaries to ~/.cargo/bin. Ensure it's in your PATH:

# Add to ~/.zshrc or ~/.bashrc
export PATH="$HOME/.cargo/bin:$PATH"

Or restart your terminal after installing Rust.

Shell Setup

Step 1: Add to your shell config

Zsh (macOS default):

echo 'eval "$(scoop init zsh)"' >> ~/.zshrc
source ~/.zshrc

Bash:

echo 'eval "$(scoop init bash)"' >> ~/.bashrc
source ~/.bashrc

Step 2: Verify

scoop --version
# โ†’ scoop 0.x.x ๐Ÿจ

What this enables

  • โœ… Auto-activation โ€” enter a directory with .scoop-version, environment activates
  • โœ… Tab completion โ€” commands, environments, Python versions
  • โœ… Shell wrapper โ€” scoop activate/deactivate works correctly

Using with pyenv

Add scoop after pyenv in your rc file:

# ~/.zshrc (order matters!)
eval "$(pyenv init -)"       # 1. pyenv first
eval "$(scoop init zsh)"     # 2. scoop second

Options

Variable Effect
SCOOP_NO_AUTO=1 Disable auto-activation
SCOOP_HOME=/path Custom scoop directory (default: ~/.scoop)
# Example: disable auto-activation
echo 'export SCOOP_NO_AUTO=1' >> ~/.zshrc

Quick Start ๐Ÿจ

# Install Python
scoop install 3.12

# Create a virtual environment
scoop create myproject 3.12

# Set for current directory (auto-activates)
scoop use myproject
(myproject) $ pip install requests

# Manage environments
scoop list                 # List all environments
scoop remove myproject     # Delete environment

Commands ๐Ÿจ

Command Description
scoop create <name> [version] Create virtual environment
scoop use <name> Set local environment (auto-activates)
scoop use <name> --link Also create .venv symlink for IDE
scoop use <name> --global Set global default
scoop list List environments
scoop list --pythons List installed Python versions
scoop remove <name> Delete environment
scoop install [version] Install Python (default: latest)
scoop install --stable Install oldest supported Python
scoop uninstall <version> Remove Python version

For complete command reference, see docs/commands.md.


Documentation ๐Ÿจ


License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this work shall be dual licensed as above, without any additional terms or conditions.


Support ๐Ÿจ

If you find this project useful, consider buying me a coffee!


Acknowledgments ๐Ÿจ

This project stands on the shoulders of giants:

  • uv by Astral โ€” The blazing-fast Python package manager that powers scoop's backend. Without uv's incredible speed and reliability, scoop wouldn't exist. Thank you to Charlie Marsh and the entire Astral team for revolutionizing Python tooling.

  • pyenv & pyenv-virtualenv โ€” The original inspiration for scoop's workflow. pyenv taught us how Python version management should feel, and pyenv-virtualenv showed us how to centralize virtual environments elegantly.

  • virtualenv by PyPA โ€” The pioneer of Python virtual environments. Thank you to Ian Bicking for the original concept that changed how we isolate Python projects.

  • Python โ€” The language that made programming accessible to everyone. scoop exists to make Python development even more delightful. Thank you to Guido van Rossum and the Python community.

  • Rust โ€” The language that makes scoop fast, safe, and reliable. Thank you to the Rust team and Ferris ๐Ÿฆ€ for proving that systems programming can be both powerful and enjoyable.


I built scoop because I needed it โ€” and now it's yours too. ๐Ÿจ

Grab a scoop, enjoy the flavor, and if you have thoughts to share, the door to the ice cream parlor is always open.

Issues ยท Discussions ยท PRs Welcome