diff --git a/elements/dib-python/README.rst b/elements/dib-python/README.rst
new file mode 100644
index 000000000..996b519f8
--- /dev/null
+++ b/elements/dib-python/README.rst
@@ -0,0 +1,9 @@
+===========
+dib=-python
+===========
+
+Adds a symlink to /usr/local/bin/dib-python which points at either a python2
+or python3 executable. This is useful for creating #! lines for scripts that
+are compatible with both python2 and python3.
+
+This does not install a python if one does not exist, and instead fails.
diff --git a/elements/dib-python/pre-install.d/01-dib-python b/elements/dib-python/pre-install.d/01-dib-python
new file mode 100755
index 000000000..57ae94ed8
--- /dev/null
+++ b/elements/dib-python/pre-install.d/01-dib-python
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
+    set -x
+fi
+set -eu
+set -o pipefail
+
+which which || install-packages which
+
+python_path=$(which python2 || which python3)
+if [ -z "$python_path" ]; then
+    echo "Could not find python2 or python3 executable."
+    exit 1
+fi
+
+ln -s $python_path /usr/local/bin/dib-python