First steps at network programmability (virtualenv)

In the last years, Software Defined Networks (SDN) and Network Programmability concepts emerged with a lot of frameworks and technologies.

This article focuses on programmability and brings tips for an environment setup.

Looking at the releases of the main Python libraries for network programmability (Figure 1) there’s a lot of activity and three of them with disruptive consequences, some of them listed below:

timeline.png Figure 1 Libraries releases dates

In that dynamic scenario, the control of the modules’ versions is imperative, and using the wrong one may raise unexpected errors.

Now imagine that you’re following several tutorials, each of them with a different library version, if you aren’t aware of the different releases your script may fail, even with no errors, or if for every tutorial you have to re-install all the libraries your system’s environment or your older script may break.

With that in mind, virtualenv brings flexibility, allowing building a virtual environment for each project, and isolate the modules’ versions per environment.

That separation brings two major benefits, the first one is to segregate the system’s modules from the project’s modules, and the second one is the ability to create a homogeneous environment that can be shared between different machines, maintaining the consistency of the modules’ versioning.

Finally, the installation and use of virtualenv are very simple, you only need to install the module with pip, create the virtual environment, activate the environment, install the project modules and at the end deactivate it.

1. Installing virtualenv

pip install virtualenv

2. Creating a virtual environment

virtualenv <folder_name>

3. Creating a virtual environment

This command creates a virtual environment at folder

virtualenv <folder_name>

4. Activate the virtual environment

cd <virtual environment folder>
source ./bin/activate

5. Install modules

pip install module_name  # install the latest version
pip install module_name==<version> # install the desired version

6. Using the virtual environment

With the virtual environment activated and the modules installed, run your scripts the same way as without the virtualenv.

7. share your virtual environment

After installing all the modules you might want to share that setup and pip freeze prints all the modules that were installed.

pip freeze > requirements.txt

This command generates requirements.txt that contains the environment modules and their versions.

8. Import a virtual environment

With the virtual environment activated runs:

pip install -r requirements.txt

9. Deactivate de Virtual Environment


Did you find this article valuable?

Support Renato Almeida de Oliveira by becoming a sponsor. Any amount is appreciated!