Virtual Environment
Transformative Tech Leader | Serial Entrepreneur & Machine Learning Engineer Leveraging 3+ years of expertise in Machine Learning and a background in Web Development, I drive innovation through building, mentoring, and educating. Passionate about harnessing AI to solve real-world problems."
A virtual environment in Python is a self-contained directory that contains a specific Python version and a collection of installed packages. It allows you to isolate dependencies for different projects, ensuring that they don't interfere with each other. This is particularly useful in cases where different projects require different versions of the same package.
Here’s a detailed tutorial on Python virtual environments.
Table of Contents
Why Use Virtual Environments?
Installing Virtual Environment Tools
venvvirtualenv
Creating a Virtual Environment
Using
venvUsing
virtualenv
Activating a Virtual Environment
Windows
macOS/Linux
Deactivating a Virtual Environment
Installing Packages in a Virtual Environment
Freezing and Sharing Dependencies with
requirements.txtRemoving a Virtual Environment
Best Practices for Virtual Environments
1. Why Use Virtual Environments?
In Python development, it’s common to work on multiple projects simultaneously. Each project might require a different version of a package or even a different version of Python. A virtual environment helps by:
Keeping dependencies isolated from each other.
Avoiding version conflicts between projects.
Ensuring consistent deployments.
For example, you might have a Django project that requires Django 3.x and another that needs Django 4.x. With virtual environments, you can have both versions installed, but each in its own environment.
2. Installing Virtual Environment Tools
Python comes with built-in support for creating virtual environments with the venv module. However, there’s also a more feature-rich tool called virtualenv. You can use either, but let’s discuss how to install them.
a. venv (Built-in with Python 3.3+)
No installation is required for venv. It comes pre-installed with Python 3.3 and newer versions.
b. virtualenv
To install virtualenv, use the following command:
pip install virtualenv
3. Creating a Virtual Environment
There are two main tools to create virtual environments in Python: venv and virtualenv. Here’s how you can use both.
a. Using venv
To create a virtual environment with venv, open your terminal or command prompt and navigate to your project directory. Then run the following command:
python -m venv myenv
python -m venv: Tells Python to use thevenvmodule to create a virtual environment.myenv: This is the name of your virtual environment. You can replacemyenvwith any name you want.
This will create a directory called myenv containing your new virtual environment.
b. Using virtualenv
If you prefer to use virtualenv, the command is similar:
virtualenv myenv
virtualenv also allows you to specify the Python version if you have multiple Python versions installed:
virtualenv -p /usr/bin/python3.9 myenv
This will create a virtual environment using Python 3.9.
4. Activating a Virtual Environment
Once the virtual environment is created, you need to activate it to use it. The command to activate it differs based on your operating system.
a. On Windows
To activate the virtual environment on Windows, use:
myenv\Scripts\activate
After activation, you’ll notice that your terminal’s prompt changes to include the name of the virtual environment:
(myenv) C:\path\to\project>
b. On macOS/Linux
On macOS or Linux, you can activate the virtual environment by running:
source myenv/bin/activate
Your terminal prompt will now look like this:
(myenv) user@machine:~/project$
5. Deactivating a Virtual Environment
When you're done working in the virtual environment and want to go back to the global environment, simply deactivate it by running:
deactivate
Your terminal will revert to its normal prompt, and you’re now using the system’s global Python environment again.
6. Installing Packages in a Virtual Environment
Once the virtual environment is activated, any Python package you install will be contained within the environment. You can install packages using pip, just like you normally would.
For example, to install Django:
pip install django
The installed package and its dependencies will only be available inside the virtual environment, keeping your global environment clean.
7. Freezing and Sharing Dependencies with requirements.txt
When working on a project, you often want to share the dependencies with others or ensure that your app can be deployed with the same versions of packages that you used.
To generate a list of installed packages, you can use the pip freeze command and output the list to a file called requirements.txt:
pip freeze > requirements.txt
The requirements.txt file will look something like this:
Django==4.1
numpy==1.21.0
pandas==1.3.0
Other users (or deployment scripts) can install the exact same dependencies using:
pip install -r requirements.txt
This will install the packages and the specific versions listed in requirements.txt.
8. Removing a Virtual Environment
To remove a virtual environment, simply delete its directory. For example, if your virtual environment is named myenv, you can remove it by running:
rm -rf myenv # For macOS/Linux
rmdir /S /Q myenv # For Windows
There’s no special command to uninstall a virtual environment—just delete the folder.
9. Best Practices for Virtual Environments
Here are a few best practices to keep in mind:
Use a virtual environment for every project: Even if the project is small, using a virtual environment helps avoid dependency conflicts.
Name your virtual environment meaningfully: Use descriptive names for your virtual environments (e.g.,
env_django_project,env_flask_app) to easily identify them.Add the virtual environment folder to
.gitignore: Never commit the virtual environment folder to version control. Addmyenv/to your.gitignorefile to prevent this.Use
requirements.txtfor sharing: Always generate and update arequirements.txtfile to ensure others can replicate the development environment.Deactivate the environment when not needed: When you're done working on the project, deactivate the environment to avoid accidentally installing packages into the wrong environment.
Conclusion
Virtual environments are an essential tool in Python development. They allow you to keep project dependencies isolated, which prevents package version conflicts and ensures smooth development and deployment processes. Whether you use venv or virtualenv, the setup is simple and effective for managing dependencies in Python projects.

