Python Virtual Environments Tutorial – Complete Guide

Welcome to a comprehensive exploration of Python virtual environments – a keystone of any successful Python programmer’s toolkit. Through this tutorial, you’ll be exposed to a critical component of Python development and see how it directly affects your efficiency and productivity in creating applications.

What is a Python virtual environment?

Python virtual environment, also known as venv, is a self-contained “room” where you can keep a specific version of Python and its packages organized separately. Think of it as an isolated working copy of Python so that you can work on, for instance, various projects with different requirements.

What is it for?

Working with Python virtual environments affords several advantages:

  • Prevent packages needed for one project interfering with the ones required for another project.
  • Reduce the risk of system-wide issues caused by mixing different Python versions for different projects.
  • Facilitate project reproduction and sharing by encapsulating its dependencies.

Why should I learn it?

Understanding and employing Python virtual environments is an essential best-practice for Python development. It enhances your flexibility in managing projects of varying complexities and requirements while keeping your system’s Python unaffected. No matter whether you’re a beginner finding your feet in coding or an experienced coder maintaining multiple projects, mastering Python virtual environments is incredibly useful.

CTA Small Image

How to create a Python virtual environment?

Let’s start by creating a new Python virtual environment. In your terminal or command prompt, navigate to the directory where you want your virtual environment:

cd your-directory-path

To create a new virtual environment, use the following command:

python3 -m venv your-env-name

In the above command, replace “your-env-name” with the name you’d like to give to your virtual environment. This will create a new directory inside your chosen directory. Inside this new folder, Python creates an environment that uses its own version and packages.

How to activate it?

Before working with your new environment, you need to activate it. The activation process varies based on your system:

On macOS and Linux:

source your-env-name/bin/activate

On Windows:


Once activated, your terminal or command prompt should now show the name of your virtual environment.

Installing packages in the Python virtual environment

Packages installed in an active environment are isolated from the system’s main Python. This is useful when you want to use different versions of a particular package for different projects.

To install a package:

pip install package-name

For example, to install NumPy:

pip install numpy

You can even check the installed packages in your environment:

pip freeze

Deactivating the Python virtual environment

To leave the virtual environment and return to your system’s Python, deactivate it:


Note: If you’re within an active virtual environment, the name of it will likely appear prefixed in your command prompt.

Creating a requirements file

A requirements file is incredibly useful when you want to share your project with others. It lists all the Python packages your project needs to run correctly. To create a requirements file, simply run:

pip freeze > requirements.txt

This command will create a ‘requirements.txt’ file and save the names of all installed packages in your environment into this file.

Installing packages from the requirements file

If someone shares a project with you, you can create a new virtual environment and use the given requirements file to install all the necessary packages. Use this command to do so:

pip install -r requirements.txt

Creating a virtual environment with a specific Python version

Sometimes, a project may require a specific version of Python. In such cases, you can specify the Python version while creating the virtual environment. For Python 2.7, for instance, use the following command:

virtualenv -p /usr/bin/python2.7 your-env-name

Alternatively, for Python 3.6:

virtualenv -p /usr/bin/python3.6 your-env-name

Remember to replace “your-env-name” with the name you want to give to your virtual environment.

List all virtual environments

To see all of the virtual environments you’ve made on your system, use this command:


Here at Zenva, we strongly believe in the value and importance of mastering such tools to navigate the world of coding. Python virtual environments are a great way to manage your projects and their dependencies while ensuring you have a smoother development experience.

As the ever-evolving field of coding presents new challenges, we’re here to help elevate your skills and keep you ahead of the curve. That’s why we constantly strive to provide high-quality, engaging, and practical coding tutorials. Happy coding!

Where to go next? How to keep learning?

You have now gained a strong grasp of Python’s virtual environments. But what’s next? Your coding journey shouldn’t stop here.

To expand your Python skills beyond the realm of virtual environments, we highly recommend our Python Mini-Degree. This comprehensive collection covers a multitude of Python topics – from coding basics and algorithms, to game and app development. This mini-degree is designed to cater to both beginners with no prior programming experience and experienced learners seeking to upskill.

In the practical projects of this mini-degree, you’ll find yourself creating arcade games, a medical diagnosis bot, and a to-do list app. These hands-on projects not only deepen your understanding of Python programming but also give you real-world skills that could be the stepping stones for a career transition or an upgrade in your current role.

In case you wish to explore an even broader range of Python topics, we invite you to check out our dedicated Python courses.


Python virtual environments are an integral part of any Python developer’s toolbox – a simple yet powerful tool to manage the complexities of different project requirements. If you’ve followed along with us, you’re now well-equipped and ready to adroitly handle dependencies, modules, and different Python versions for your multifaceted projects.

Don’t forget, though, that this is just the beginning of your journey. Coding has a lot more to offer and to unravel. Stay ahead in the changing digital landscape by further expanding your Python capabilities. Consider embarking on our comprehensive Python Mini-Degree and elevate your coding credentials. You’ve got this – so get coding, and never stop learning!

Did you come across any errors in this tutorial? Please let us know by completing this form and we’ll look into it!

Python Blog Image

FINAL DAYS: Unlock coding courses in Unity, Godot, Unreal, Python and more.