DEV Community

Carlos Armando Moreira
Carlos Armando Moreira

Posted on • Edited on

Creating a Virtual Environment (venv) in Python

Introduction

Virtual environments are a must-have for Python developers. They help isolate project dependencies, ensuring compatibility, and preventing conflicts between projects. In this guide, I aim to walk you through the process of creating and managing a virtual environment in Python, helping you increase productivity and avoid common challenges.

Why Use Virtual Environments?

When working on multiple Python projects, managing dependencies can become tricky. Without virtual environments, a library installed for one project might unintentionally affect another, leading to version conflicts and unexpected errors. Virtual environments solve this by creating isolated workspaces for each project.

Creating a Virtual Environment

First, to create a virtual environment, we will need the venv module, which is already included in the more recent versions of Python (starting from version 3.3). This means that when you install Python, you automatically have access to the functionality to create virtual environments using venv.

1. Creating the Project

First, we need to create a folder that will contain our project. You can do this manually or through the terminal.

mkdir my-project
Enter fullscreen mode Exit fullscreen mode

Navigating into the folder:

cd my-project/
Enter fullscreen mode Exit fullscreen mode

2. Creating the Virtual Environment

To create the virtual environment, type the following command in the terminal:

python -m venv virtual_environment_name
Enter fullscreen mode Exit fullscreen mode

Normally, we use "venv" as the virtual_environment_name, but this is not a rule, and other names should work as well.

After using the command above, note that a folder will be created (with the name you provided), and this folder will be responsible for storing the current version of Python you have, as well as all the libraries used in the project. These libraries will be stored only in this directory and not in the main system, allowing for versatility when working on different projects.

3. Activating the Virtual Environment

On macOS and Linux:

source virtual_environment_name/bin/activate
Enter fullscreen mode Exit fullscreen mode

On Windows:

virtual_environment_name/Scripts/Activate
Enter fullscreen mode Exit fullscreen mode

Once this is done, the name of the current virtual environment will be displayed in the terminal prompt, indicating that the environment has been successfully activated.

4. Manage Dependencies

With the environment active, you can install packages using pip. For example:

pip install flask requests beautifulsoup4
Enter fullscreen mode Exit fullscreen mode

5. Replicating Environments

With our virtual environment up and running, we can replicate it on other machines. To do this, we need to export a file containing the libraries used in the project.

pip freeze > requirements.txt
Enter fullscreen mode Exit fullscreen mode

By using this command, a requirements.txt file will be created, containing all the libraries present in our virtual environment. For example:

Flask==2.3.2
requests==2.32.3
beautifulsoup4==4.12.3
Enter fullscreen mode Exit fullscreen mode

Finally, if we want to run our project on another machine, it won’t be necessary to download the dependencies one by one. We can simply use the command below, and all the libraries listed in the requirements.txt file will be installed automatically.

pip install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode

6. Deactivating the Virtual Environment

To deactivate a virtual environment and return to the global Python environment, we can type:

deactivate
Enter fullscreen mode Exit fullscreen mode

Benefits of Using Virtual Environments

  • Dependency Isolation: Avoids conflicts between project dependencies.
  • Portability: Easily replicate environments across different systems.
  • Collaboration: Simplifies project sharing and ensures consistency among team members.

Conclusion

Virtual environments are a vital tool for any Python developer, promoting organized and efficient workflows. Whether you’re developing web applications, data science projects, or automating tasks, using virtual environments will save time and prevent headaches.

Explore more: Python venv documentation.

Top comments (0)