Blog

How to Use Virtual Environments to Keep Your Python Projects Clean

How to Use Virtual Environments to Keep Your Python Projects Clean

Picture this: You're working on a machine learning project that requires TensorFlow 2.8, but your climate modeling script needs an older version that only works with TensorFlow 2.4. You install the newer version, and suddenly your climate model breaks. Sound familiar?

This is exactly why virtual environments exist—and why every researcher using Python should know how to use them.

What Are Virtual Environments?

A virtual environment is like having separate, isolated Python installations for each of your projects. Think of it as having different lab benches for different experiments—each with its own set of tools and materials that don't interfere with each other.

Each virtual environment has its own:

  • Python interpreter
  • Installed packages and their specific versions
  • Scripts and executables

Why Researchers Need Virtual Environments

Let's say you're working on three different projects:

  • Project A: Data analysis with pandas 1.3.0 and matplotlib 3.4.0
  • Project B: Deep learning with TensorFlow 2.8 and numpy 1.21.0
  • Project C: Bioinformatics with BioPython 1.79 and an older version of scipy

Without virtual environments, you'd be constantly upgrading and downgrading packages, potentially breaking working code. With virtual environments, each project lives in its own bubble.

Creating Your First Virtual Environment

Python 3.3+ comes with venv built-in. Here's how to use it:

1. Create a new virtual environment:

python -m venv my_research_project

2. Activate it:

On Windows:

"my_research_project\Scripts\activate"

On macOS/Linux:

source my_research_project/bin/activate

You'll see (my_research_project) appear in your terminal prompt—this means you're inside the virtual environment!

3. Install packages:

pip install pandas matplotlib scipy

4. When you're done, deactivate:

deactivate

A Real Research Workflow

Here's how I organize my research projects:

mkdir earthquake_analysis
cd earthquake_analysis
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate on Windows
pip install pandas seaborn obspy
pip freeze > requirements.txt

The requirements.txt file saves all your package versions. Anyone (including future you!) can recreate the exact environment with:

pip install -r requirements.txt

Pro Tips for Researchers

1. Name your environments descriptively:

  • climate_modeling_2024
  • protein_folding_analysis
  • survey_data_processing

2. Keep a requirements.txt file: Always run pip freeze > requirements.txt after installing packages. This makes your research reproducible.

3. Use different environments for different papers: Each publication can have its own environment, ensuring your analysis remains reproducible years later.

Common Mistakes to Avoid

❌ Installing packages globally: Don't run pip install without activating an environment first.

❌ Forgetting to activate: Always check that your environment name appears in the terminal prompt.

❌ Committing the environment folder: Don't add the venv/ folder to git—just commit the requirements.txt file.

Alternative Tools

While venv is built-in and perfect for most research projects, you might also hear about:

  • conda: Great for scientific computing, especially if you need non-Python dependencies
  • pipenv: Combines pip and venv with additional features
  • poetry: Modern dependency management with advanced features

TL;DR

  • Virtual environments prevent package conflicts between projects
  • Use python -m venv project_name to create one
  • Always activate before installing packages
  • Save dependencies with pip freeze > requirements.txt
  • Your future self (and your collaborators) will thank you!

Final Thought

Virtual environments might seem like extra work at first, but they're like good lab hygiene—a small investment that prevents huge headaches down the road. Start using them today, and your research workflow will become much more organized and reproducible.

Happy coding! 🐍

Dr Victor Gambarini

Dr Victor Gambarini

Dr Victor Gambarini is a bioinformatician and systems engineer with a PhD from the University of Auckland, specializing in microbiome research and environmental genomics. His work has contributed to many peer-reviewed publications, including studies on plastic biodegradation, sugarcane rhizosphere microbiota, and iNKT cell function in metabolic disease. Victor’s core expertise lies in the analysis of next-generation sequencing data, multi-omics integration, and co-expression network analysis. He combines advanced programming skills in Python and R with experience in high-performance computing and cloud infrastructure, making him uniquely positioned to bridge research and computational scalability. Fluent in both English and Portuguese, Victor has international experience across Brazil, the U.S., and New Zealand.