22.1.2 Configuring a Virtual Environment

2025.10.06.
AI Security Blog

Before you install a single tool, you must establish an isolated workspace. A virtual environment is not an optional step; it is a fundamental requirement for professional, reproducible, and secure development and testing. It acts as a self-contained directory tree that includes a Python installation and any additional packages required for a specific project, preventing conflicts between dependencies of different projects.

The Principle of Isolation

Imagine your base system’s Python installation as a public workshop. If you work on multiple projects there, tools and materials for one project (e.g., a specific version of TensorFlow) will inevitably get mixed up with those for another (which might require a conflicting PyTorch version). This leads to dependency hell, where upgrading a library for one project breaks another.

Kapcsolati űrlap - EN

Do you have a question about AI Security? Reach out to us here:

A virtual environment is like giving each project its own private, sterile laboratory. Nothing from one lab can contaminate another, and each has its own precise set of tools. This isolation is critical for security as well; if a vulnerability is discovered in a package used for one test, it remains contained within that environment and doesn’t compromise your entire system.

Diagram illustrating the concept of virtual environment isolation. System Python Project A Env tensorflow==2.8 pandas==1.4 adversarial-lib-v1 Project B Env pytorch==1.12 numpy==1.21 llm-guard Project C Env tensorflow==2.11 scikit-learn art-toolbox

We will cover the two most common tools for this purpose: venv, Python’s built-in module, and conda, a more powerful, cross-platform manager popular in the data science community.

Method 1: Using Python’s `venv`

For projects that rely exclusively on Python packages, venv is the standard, lightweight, and recommended choice. It’s included with Python 3.3+ by default, so no extra installation is required.

Step 1: Create the Environment

Navigate to your project directory and run the following command. This creates a new folder (here, `redteam-env`) containing a copy of the Python interpreter and supporting files.

# On Linux/macOS/Windows
python3 -m venv redteam-env

Step 2: Activate the Environment

Activation modifies your shell’s path to point to the executables inside the new environment folder. Your shell prompt will typically change to show the active environment’s name.

# On Linux/macOS
source redteam-env/bin/activate

# On Windows (Command Prompt)
redteam-envScriptsactivate.bat

# On Windows (PowerShell)
.redteam-envScriptsActivate.ps1

After activation, your prompt might look like this: (redteam-env) $.

Step 3: Install Packages

With the environment active, any package you install using pip will be placed inside the redteam-env folder, leaving your global Python installation untouched.

# The 'pip' command now refers to the one inside redteam-env
pip install numpy pandas jupyterlab

Step 4: Deactivate the Environment

When you’re finished working, you can return to your system’s default Python interpreter.

# This command works on all platforms
deactivate
Pro Tip: Always add your virtual environment directory to your project’s .gitignore file. This prevents you from committing potentially massive library files to your version control system. Simply add a line with the environment’s name, like redteam-env/, to your .gitignore.

Method 2: Using `conda`

Conda is an environment and package manager that comes with the Anaconda or Miniconda distributions. It is more powerful than venv because it can manage non-Python dependencies (like CUDA, MKL, or even R packages) and specific Python versions. It is the de facto standard for complex machine learning projects.

Step 1: Create the Environment

The conda create command allows you to name your environment and specify the Python version and initial packages simultaneously.

# Creates an environment named 'redteam-conda' with Python 3.10
conda create --name redteam-conda python=3.10

Step 2: Activate the Environment

Activation with conda is simpler and consistent across all operating systems.

conda activate redteam-conda

Your prompt will change to (redteam-conda) $.

Step 3: Install Packages

You can install packages using conda install, which pulls from conda repositories (like the default `anaconda` channel or community-driven `conda-forge`). It’s particularly good at resolving complex dependencies for scientific computing stacks.

# Installing PyTorch from its specific channel for CUDA 11.7 support
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

Step 4: Deactivate the Environment

Similar to `venv`, deactivating returns you to the base environment.

conda deactivate

`venv` vs. `conda`: Making the Right Choice

Your choice of tool depends on your project’s needs. Here’s a quick comparison to guide your decision.

Feature venv conda
Purpose Python environment management only. Language-agnostic environment and package manager.
Scope Manages packages from PyPI using pip. Manages packages from conda channels and can also use pip.
Dependency Resolution pip has a basic resolver; can lead to conflicts in complex projects. Robust dependency solver, excels at handling complex binary dependencies.
Overhead Lightweight, built into Python. Requires installing Miniconda or Anaconda; more heavyweight.
Best For… Web development, scripting, Python-only applications. Data science, machine learning, projects with non-Python dependencies.

Environment Management for Reproducibility

Creating an environment is only the first step. To ensure your tests and findings are reproducible by others (or by you in the future), you must document its dependencies.

Generating a Dependency List

Once your tools are installed, you can create a file that lists all packages and their exact versions.

# For pip/venv environments
pip freeze > requirements.txt

# For conda environments (more comprehensive)
conda env export > environment.yml

Recreating an Environment

Anyone with your project can then perfectly replicate your environment using this file, which is a cornerstone of collaborative and verifiable security research.

# Recreating a venv/pip environment
python3 -m venv new-env
source new-env/bin/activate
pip install -r requirements.txt

# Recreating a conda environment
conda env create -f environment.yml

By mastering virtual environments, you establish a professional workflow that ensures stability, prevents conflicts, and makes your red teaming activities structured and reproducible. This foundational skill is indispensable as you proceed to install and utilize more specialized tools.