Contribute Media
A thank you to everyone who makes this possible: Read More

Real virtual environments without virtualenv


Mihai Iachimovschi - Real virtual environments without virtualenv [EuroPython 2016] [21 July 2016] [Bilbao, Euskadi, Spain] (

Virtualenv is a great tool for the development environment but it's definitely not suitable for every use case. Also, Docker is great for running the application in production, but not everyone that use it in production tried to use it in the development environment. Why not use the same tool from the beginning of the project and until it hits the production in a uniform stack of tooling? This talk will show use cases of using Docker in the process of development as well.

The process of developing using Python is very straightforward and easy. Still, each and every developer has his own style of developing and building his entire dev environment. Most of us use virtualenvs which are reliable and comfortable to use. But there are some issues. For instance, the repeatability and immutability of the built environment are not guaranteed.

Virtualenv does a lot of work that targets the direction of somehow isolated and independent environments. They are almost fully repeatable. In any team, we can hear the notorious expression "It works for me!".

For some time now, I am using Docker instead of virtualenv for building custom and really-virtual environments that are entirely isolated. The containers are immutable and consistent, so this workflow guarantees repeatability. Using such technique, not only enables the user to have unique and immutable environments, it also allows de developer to create full app architecture that can then be tested and deployed as is. So the production version will be in identical conditions as the one from the development environment. These features are not provided by virtualenv at all.

The goal of this exercise is to try to use totally different tooling for building the application from its first line of code until the production.

Improve this page