The Python programming language supports "virtual environments" that make it easy to install libraries for specific projects. For instance, you can employ the newest version of a library for one project and an older version for another. Since virtual environments ensure that all Python projects are no longer forced to depend on a system-wide library, they support program isolation and thus enable software engineers to manage the library dependencies in their Python projects.
For many years
virtualenv was one of the most
established and well-known tools for creating a virtual environment. When I first started programming in Python, I
investigated this approach and expected that it would be the one that I would adopt. However, since my new projects are
exclusively in Python 3, I discovered that there was another tool that was part of the Python 3 language and the most
appropriate choice for new projects.
What is this new approach? It is called
venv! While there is some great documentation on
venv, I decided to write this post to share some of the additional
details that I learned about how to use it on a recent version of the Ubuntu operating system.
Even though I had Python 3 installed correctly, I found that I also needed to run
sudo apt install python3-venv. Now,
for illustrative purposes, let's assume that we are creating a project called lightning.py, a new "lightning fast"
sorting algorithm that was recently development. If this project is in the
lightning.py directory, then the next
command to type in the terminal window is
python3 -m venv lightning.py. This command will create a
virtual environment inside of the
Once the virtual environment is created, we need to start using it through the process of "activation" and by typing the
following command in the directory that contains the new Python 3 project:
source lightning.py/bin/activate. Depending
on how your terminal window is configured, you should see in your command prompt that the
lightning.py project is now
At this point, you can install various libraries using the
pip install command. For instance, if you wanted to
requests library you could type the following command in your terminal:
pip install requests. Notice
that this command will not install
requests in a system-wide fashion — instead it will only be available to the
Okay, that's great! Now, we are ready to design, implement, test, and document the
lightning.py project. But, what do
we do when we want to stop running this virtual environment? You can accomplish this goal by typing the
command in your terminal window. Now the environment is no longer running!
In my experience with developing various software tools to
analyze data for research papers, I have found that it is important to employ good
software engineering practices. Using virtual environments with
venv is a practice that you should adopt if you are
using Python 3 in the field of data science. Interested in learning more about this topic? Or, do you have some ideas to
share with me about virtual environments? Please contact with me your questions and
Enjoy this post? If so, please read, SEED Interview with Timothy Tsai, my most recent article.