direnv
direnv is an environment management tool that automatically “loads and unloads environment variables depending on the current directory” in your shell. While not Python-specific, direnv is particularly useful for Python development by helping manage project-specific environments and settings.
ℹ️
direnv works with any programming language or shell, but has special integrations with Python tools and virtual environments.
Core Functionality
- Automatically activates/deactivates environment variables when entering/leaving directories in your shell
- Loads environment variables from
.envrcfiles
Python Integration
direnv has built-in support for Python virtual environments through:
- Automatic virtual environment activation
- Support for environment variables used by Python tools
- Handling of Python-specific path configurations
For example, .envrc for a Python project might look like:
# Activate virtual environment
layout python python3.11
# Set project-specific variables
export FLASK_ENV=developmentPros
- Seamless environment switching between projects
- Language-agnostic but Python-friendly
Cons
- Requires shell integration setup
- Learning curve for
.envrcsyntax - Can conflict with other environment managers
⚠️
While direnv has robust support for traditional Python virtual environments, it does not yet natively support uv-created virtual environments. The community is actively working on this integration. For now, users leveraging uv must manually configure environment activation or use uv run directly for project execution.
Learn More
Last updated on