diff --git a/bin/compile b/bin/compile
index adfff6ef2f3422a0dc4d81e5398a075f0e1903b5..f077a5911be24e8abeec64eca8df7e79bfe68811 100755
--- a/bin/compile
+++ b/bin/compile
@@ -42,7 +42,7 @@ export VENDOR_URL
 # Python defaults
 DEFAULT_PYTHON_VERSION="python-3.6.4"
 LATEST_3="python-3.6.4"
-LATEST_2="python-2.7.14"
+LATEST_2="python-2.7.15"
 
 DEFAULT_PYTHON_STACK="cedar-14"
 PIP_UPDATE="9.0.2"
diff --git a/builds/runtimes/python-2.7.15 b/builds/runtimes/python-2.7.15
new file mode 100755
index 0000000000000000000000000000000000000000..8177f5ea9ea3b55497efe425a319575ef5fbc214
--- /dev/null
+++ b/builds/runtimes/python-2.7.15
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+# Build Path: /app/.heroku/python/
+# Build Deps: libraries/sqlite
+
+OUT_PREFIX=$1
+
+echo "Building Python…"
+SOURCE_TARBALL='https://python.org/ftp/python/2.7.15/Python-2.7.15.tgz'
+curl -L $SOURCE_TARBALL | tar xz
+mv Python-2.7.15 src
+cd src
+
+./configure --prefix=$OUT_PREFIX  --enable-unicode=ucs4 --with-ensurepip=no
+make
+make install
+
+# Remove unneeded test directories, similar to the official Docker Python images:
+# https://github.com/docker-library/python
+find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' +
diff --git a/test/fixtures/python2/runtime.txt b/test/fixtures/python2/runtime.txt
index 2ce112e3253c6999f1c58a59742c73ca95178cff..f27f1cc5ca4d2e750411e5ee682f6eb6baa674c2 100644
--- a/test/fixtures/python2/runtime.txt
+++ b/test/fixtures/python2/runtime.txt
@@ -1 +1 @@
-python-2.7.14
\ No newline at end of file
+python-2.7.15
diff --git a/test/run b/test/run
index b08d261b64da85a7678a3d330368e1d5c62fbb58..4b54fd6cebe763fe0df098a915ba658e9f427ab8 100755
--- a/test/run
+++ b/test/run
@@ -77,7 +77,7 @@ testPylibmc() {
 
 testPython2() {
   compile "python2"
-  assertCaptured "python-2.7.14"
+  assertCaptured "python-2.7.15"
   assertCapturedSuccess
 }