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 invenv/directory- Activation modifies PATH to use venv's Python and pip
pip freezecaptures exact versions of installed packagesrequirements.txtenables 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.txtin version control - Add
venv/to.gitignore - Use
pip listto see installed packages - Consider
pip-toolsorpoetryfor 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 freezeincludes all dependencies - usepipreqsfor minimal requirements
comments powered by Disqus