Understanding and Using Virtual Environments in Python
Introduction
Python is a very versatile programming language, used in many different fields like web development, data science, artificial intelligence, etc. One of the reasons for its vast use is the extensive availability of packages and libraries that augment its functionalities. However, using different libraries can sometimes lead to conflicts, especially with regards to versions. This is where Python’s virtual environments come to our rescue.

In this article, we will be discussing the following topics:
- What is a Virtual Environment?
- Why use Virtual Environments?
- How to create and use Virtual Environments?
- Virtual Environment using Conda
The goal here is to impart a solid foundation for working with Python’s virtual environments, with practical examples to reinforce learning for both beginners and experienced Python enthusiasts.
Understanding Virtual Environments
What is a Virtual Environment?
A Virtual Environment is an isolated environment where you can install packages, and work on your Python project without interfering with your other Python projects or system-wide packages.
Each virtual environment has its own Python binary (which matches the version of the Python used to create this environment) and can have its own independent set of installed Python packages.
Why use Virtual Environments?
In a real-world software development environment, your different projects may use different versions of the same library, and certain projects might require packages that are not needed in other projects. Hence, to manage these project-specific dependencies, we use virtual environments.
Using a virtual environment has several advantages:
- Isolates your Python environment for each project
- Prevents problems related to different versions of the same package
- Keeps your global site-packages directory clean and manageable
- Greater control over your Python environment
Using Virtual Environments
Python 3 comes with a built-in module for creating virtual environments – venv
. Let’s dive into using it with some practical examples.
Creating a Virtual Environment
Creating a virtual environment is straightforward. We will create a virtual environment named myenv
for our project:
python3 -m venv myenv
This command will create a folder named myenv
in your current directory. This is your virtual environment. You can name it anything you like.
Activating the Virtual Environment
To use the newly created virtual environment, you need to activate it. The method to do this depends on the operating system you’re using.
For Unix or MacOS:
source myenv/bin/activate
For Windows:
myenv\Scripts\activate
Once your virtual environment is activated, your command line prompt will look different, it will start with the name of your virtual environment i.e., (myenv)
.
Installing Packages
You can now install packages specifically for this virtual environment without affecting your other Python projects or the system-wide Python setup.
For example, to install the requests
package, we can use pip:
pip install requests
Deactivating the Virtual Environment
Once you’re done with your work, you may wish to deactivate your virtual environment. All you have to do is use the command:
deactivate
Your command line prompt will now return back to normal.
Virtual Environments using Conda
While venv
is great, if you’re using the Anaconda Python distribution for scientific computing, you may find conda
, a powerful package manager which also serves as a virtual environment manager, more appropriate.
Let’s create a Conda environment:
conda create -n mycondaenv python=3.8
This command creates a new conda environment named mycondaenv
with Python 3.8.
To activate this environment:
conda activate mycondaenv
You can now install packages using either pip
or conda
. When you’re done and would like to deactivate your environment, you can do this by:
conda deactivate
And there you go! You are now armed and ready to manage separate project dependencies efficiently with virtual environments.
Conclusion
Understanding and using Python’s virtual environments can greatly augment your Python development experience. It allows you to manage dependencies efficiently, keep a clean global site-package directory, and provide an extra layer of security, making your life as a Python developer smoother. And thanks to built-in or easily-accessible tools like venv
and conda
, the process is seamless and user-friendly.
Whether you’re a beginner just dipping your toes into the world of Python or an experienced Pythonista, virtual environments are a critical tool in your software development arsenal.
Happy coding!