Virtual Environments and Packages in Python

Greetings! Some links on this site are affiliate links. That means that, if you choose to make a purchase, The Click Reader may earn a small commission at no extra cost to you. We greatly appreciate your support!

As discussed in the previous lesson, Python provides a decent set of standard libraries for a range of tasks.

However, Python applications often require packages and modules that are not a part of the standard library. There are cases when applications need a specific version of a library since the application may be written using a specific version of the library. Hence, it is not possible for one Python installation to meet the requirements of every application.

The solution for this problem is to create a virtual environment which is a self-contained directory tree that contains a Python installation for a particular version of Python, plus a number of additional packages. With this setup, you can use different virtual environments for different applications.

Creating Virtual Environments

To create a virtual environment, you can first decide the directory where you want to place the virtual environment. Then, you can navigate to that directory from the Command Prompt/Terminal and run the venv module:

python3 -m venv myenv

The above line of code creates the myenv directory if it does not exist, and also creates directories inside it. These directories contain a copy of the Python interpreter, the standard library, and various supporting files. A common directory extension for a virtual environment is .venv.

The directory tree of a virtual environment looks like the following:

project-directory/myvenv/                  # Environment's root directory
├── bin
│   ├── activate                           # Scripts to activate the virtual environment
│   ├── activate.csh                       
│   ├──                     
│   ├── easy_install
│   ├── easy_install-3.7
│   ├── pip
│   ├── pip3
│   ├── pip3.7
│   ├── python -> /usr/local/bin/python    # Symlinks to system-wide
│   └── python3 -> python3.8               # Python instances.
├── include
├── lib
│   └── python3.8
│       └── site-packages                  # Stores local site packages
└── pyvenv.cfg

Activating Virtual Environments

Once you’ve created a virtual environment, you need to activate it.

For Windows, run:


For Unix or MacOS, run:

source myenv/bin/activate

After activation of a virtual environment, every Python code you run will use the Python interpreter of this virtual environment.

Managing Packages

1. Manually installing/uninstalling new packages

You can install, upgrade, and remove packages using a program called pip which is a package manager for Python. By default, pip installs packages from the Python Package Index,

The program manager pip has several subcommands: “search”, “install”, “uninstall”, “freeze”, etc. You can install the latest version of a package by specifying the name of the package.

pip install package_name

For example, package_name can be any package known by pypi such as numpy, pandas, matplotlib, etc. So, to install numpy, use the following command:

pip install numpy

Conversely, you can uninstall the package by using the uninstall command of pip.

pip uninstall package_name

2. Using the requirements.txt file

A requirements file is a text file that lists out all the external packages/modules and their version number that are installed in a particular virtual environment. The requirements file is extremely useful when we need to replicate a virtual environment on another computer so that an application runs perfectly on the other computer too.

To generate a requirements file for a virtual environment, run the following command after the environment is activated.

pip freeze > requirements.txt

After running this command, a new file named requirements.txt is created that lists all the modules installed in that environment. All the packages listed in the requirements.txt file can be easily installed in a new virtual environment by running the following command:

pip install -r requirements.txt

That is it for this lesson. Let us head over to our final lesson on ‘Working with Files in Python‘ and conclude this course.

Leave a Comment