Python Virtual Environments

Virtual environments isolate Python project dependencies, preventing conflicts between projects. Essential for reproducible research and clean dependency management.

Use Case

Use virtual environments when you need to:

  • Isolate project dependencies
  • Work on multiple projects with different requirements
  • Ensure reproducible environments
  • Avoid system-wide package conflicts

Code

 1# Create virtual environment
 2python -m venv venv
 3
 4# Activate (Windows)
 5venv\Scripts\activate
 6
 7# Activate (Linux/Mac)
 8source venv/bin/activate
 9
10# Install packages
11pip install numpy pandas matplotlib
12
13# Save dependencies
14pip freeze > requirements.txt
15
16# Install from requirements
17pip install -r requirements.txt
18
19# Deactivate
20deactivate

Explanation

  • python -m venv venv - Creates virtual environment in venv/ directory
  • Activation modifies PATH to use venv's Python and pip
  • pip freeze captures exact versions of installed packages
  • requirements.txt enables reproducible installations

Examples

Example 1: Research Project Setup

 1# Create project directory
 2mkdir my-research
 3cd my-research
 4
 5# Create virtual environment
 6python -m venv venv
 7
 8# Activate
 9source venv/bin/activate  # or venv\Scripts\activate on Windows
10
11# Install research dependencies
12pip install numpy scipy matplotlib jupyter pandas scikit-learn
13
14# Save dependencies
15pip freeze > requirements.txt
16
17# Add to git
18echo "venv/" >> .gitignore
19git add requirements.txt
20git commit -m "Add Python dependencies"

Example 2: Reproduce Environment

 1# Clone repository
 2git clone <repo-url>
 3cd <repo>
 4
 5# Create and activate venv
 6python -m venv venv
 7source venv/bin/activate
 8
 9# Install exact dependencies
10pip install -r requirements.txt
11
12# Verify installation
13pip list

Example 3: Multiple Python Versions

1# Use specific Python version
2python3.11 -m venv venv311
3python3.9 -m venv venv39
4
5# Activate specific version
6source venv311/bin/activate
7python --version  # Should show 3.11.x

Example 4: Upgrade Packages

 1# Activate environment
 2source venv/bin/activate
 3
 4# Upgrade single package
 5pip install --upgrade numpy
 6
 7# Upgrade all packages (careful!)
 8pip list --outdated
 9pip install --upgrade pip setuptools wheel
10
11# Update requirements.txt
12pip freeze > requirements.txt

Notes

  • Always activate venv before installing packages
  • Include requirements.txt in version control
  • Add venv/ to .gitignore
  • Use pip list to see installed packages
  • Consider pip-tools or poetry for advanced dependency management

Gotchas/Warnings

  • ⚠️ Activation: Must activate venv in each new terminal session
  • ⚠️ System packages: Don't use sudo pip - use venv instead
  • ⚠️ Path issues: Deactivate old venv before activating new one
  • ⚠️ Requirements: pip freeze includes all dependencies - use pipreqs for minimal requirements
comments powered by Disqus