virtual environment
**Virtual environments** are **isolated Python installations that prevent dependency conflicts between projects** — creating self-contained directories where packages exist in isolation, letting different projects use different package versions without system-wide conflicts.
**What Is a Virtual Environment?**
- **Definition**: Isolated Python interpreter and packages directory for one project.
- **Purpose**: Prevent dependency hell (Project A needs requests==1.0, Project B needs requests==2.0).
- **Tools**: venv (built-in Python 3.3+), virtualenv, poetry, conda.
- **Best Practice**: Every Python project must have its own virtual environment.
- **Cleanup**: Delete folder to remove all packages instantly.
**Why Virtual Environments Matter**
- **Dependency Isolation**: Projects don't fight over package versions.
- **Production Safety**: Dev environment exactly matches production setup.
- **Team Collaboration**: Everyone uses identical dependencies.
- **System Cleanliness**: Keep Python installation pure.
- **Version Testing**: Test code on Python 3.9, 3.10, 3.11 simultaneously.
**Quick Start**
```bash
# Create environment
python -m venv venv
# Activate (Linux/Mac)
source venv/bin/activate
# Install packages
pip install flask requests pandas
# Save dependencies
pip freeze > requirements.txt
# Share project
git clone project
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
**Best Practices**
- Never commit venv/ folder — add to .gitignore.
- Always activate before pip install.
- Pin exact versions in requirements.txt for production.
- Use poetry or conda for advanced dependency management.
Virtual environments are the **foundation of professional Python development** — eliminate dependency conflicts and make reproducible environments the standard.