Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

What is venv in Python

Understanding venv in Python

When you're starting out with programming, especially in Python, you might come across the term venv or virtual environment. This might sound like a complex concept, but it's actually a very simple and useful tool that helps you manage your Python projects better.

What is a Virtual Environment?

Imagine you have a toolbox. In this toolbox, you gather all the tools you need for a specific project. Now, what if you have multiple projects? You might need different tools or even different versions of the same tool for each project. If you mix up all your tools in one box, things can get messy quickly. You might use the wrong tool or version, which could lead to problems.

In the world of Python programming, venv is like having a separate toolbox for each project. It's a system that allows you to create isolated spaces on your computer for your Python projects. Each space, or environment, has its own set of tools (in programming, these are called libraries or packages) and its own Python interpreter (the program that reads and executes your Python code).

Why Use a Virtual Environment?

Using a virtual environment in Python has several benefits:

Isolation: Each project you work on can have its own dependencies, which are the external libraries and packages your project needs to run. By isolating these dependencies, you ensure that changes in one project do not affect another.

Organization: It's easier to keep track of what each project needs when everything is contained within its own environment.

Compatibility: Sometimes different projects require different versions of the same package. Virtual environments allow you to maintain these different versions without conflict.

Control: You have better control over your Python projects, making it easier to share them with others or deploy them to production environments.

Setting Up Your First Virtual Environment

Creating a virtual environment in Python is straightforward. First, you'll need to have Python installed on your computer. Python comes with a module called venv specifically for this purpose.

Here's how you can create a virtual environment:

python3 -m venv my_project_env

This command tells Python to create a new environment called my_project_env. The python3 -m venv part of the command is calling Python and telling it to use the venv module to create a new environment.

Once you've run this command, a new directory named my_project_env will be created. This directory contains a copy of the Python interpreter, a copy of the pip tool (which is used to install Python packages), and other necessary files.

Activating the Virtual Environment

Before you can start using the virtual environment, you need to activate it. This step is like putting on the right gloves before starting to work on your project. It ensures that any Python commands you run are using the environment's settings and packages.

To activate the virtual environment, you'll need to run a script that's created in the environment's directory. The command you use depends on your operating system.

On macOS and Linux:

source my_project_env/bin/activate

On Windows:


When the environment is activated, you'll often see the name of the environment in your command prompt. This is a visual indication that you're now working within the virtual environment.

Installing Packages in Your Virtual Environment

Now that you've activated your environment, you can start installing packages that your project needs. Let's say you want to install a package called requests, which allows you to send HTTP requests in Python.

You would use pip, the package installer for Python, like this:

pip install requests

This command downloads the requests package and installs it in your virtual environment. If you were to deactivate the environment and activate a different one, that environment would not have the requests package until you installed it there as well.

Deactivating Your Virtual Environment

When you're done working in your virtual environment, you can deactivate it, which is like putting your tools back in the box and closing it. To deactivate the environment, you simply use the deactivate command:


After running this command, your command prompt will return to normal, indicating that you're no longer working inside the virtual environment.

Managing Multiple Projects

As you work on more projects, you'll likely need to create more virtual environments. It's a good practice to give each environment a name that's related to its project, so you can easily remember which is which.

You might end up with a directory structure like this:

├── project1/
│   ├── venv_project1/
│   └── (project files)
└── project2/
    ├── venv_project2/
    └── (project files)

This keeps your projects and their environments neatly organized and separate from each other.

Common Pitfalls for Beginners

When you're new to using virtual environments, there are a couple of common mistakes to watch out for:

Forgetting to activate the environment: If you run Python scripts without activating the environment, they won't have access to the environment's packages and settings.

Installing packages globally: Make sure you've activated your environment before installing packages. If you don't, you might install them globally, which defeats the purpose of having an isolated environment.


venv is a powerful feature in Python that helps you manage your projects like a pro. It's like having a dedicated workspace for each project where everything is neatly organized and where you can work without worrying about affecting your other projects. By mastering virtual environments, you become a more organized and efficient programmer, capable of juggling multiple projects with ease. So go ahead, set up your virtual environments, and enjoy the clean, controlled, and conflict-free world of Python programming. Happy coding!