Packaging in packaging: dh-virtualenv


Deploying your software can become a tricky task, regardless of the language. In the spirit of the Python conferences, every conference needs at least one packaging talk.

This talk is about dh-virtualenv. It's a Python packaging tool aimed for Debian-based systems and for deployment flows that already take advantage of Debian packaging with Python virtualenvs


Dh-virtualenv is an open source tool developed at Spotify. We use it to ease deploying our Python software to production. We built dh-virtualenv as a tool that fits our existing continuous integration flow with a dedicated sbuild server. As we were already packaging software in Debian packages, the aim of dh-virtualenv was to make transition to virtualenv based installations as smooth as possible.

This talk covers how you can use dh-virtualenv to help you deploy your software to production, where you are already running a Debian-based system, such as Ubuntu, and what are the advantages and disadvantages of the approach over other existing and popular techniques. We will discuss the deploying as a problem in general, look into building a dh-vritualenv-backed package, and in the end, look into how dh-virtualenv was actually made.

Goal is that after this presentation you know how to make your Debian/Ubuntu deployments easier!

dh-virtualenv if fully open sourced, production tested software, licensed under GPLv2+ and available in Debian testing and unstable.

More information of it is also available in our blogpost.

Talk outline:

  1. Introduction & overview (3min)
    • Who am I?
    • Why am I fiddling with Python packaging?
    • What do you get out of this talk?
  2. Different shortcomings of Python deployments (5min)
    • Native system packages
    • Virtualenv based installations
    • Containers, virtual machine images
  3. dh-virtualenv (10 min)
    • What is dh-virtualenv?
    • Thought behind dh-virtualenv
    • Advantages over others
    • Requirements for your deployment flow
    • Short intro to packaging Sentry with dh-virtualenv
  4. How is it built? (10 min)
    • Debian package building flow primer
    • How dh-virtualenv fits that flow
    • What does it do build time and why?