diff --git a/bin/compile b/bin/compile
index 167aa82e5815bc5a9a7e4766f28272396c4dab20..aacf98169fbe60ec856da3d14095023ffe8a4f5e 100755
--- a/bin/compile
+++ b/bin/compile
@@ -40,6 +40,7 @@ BUILDPACK_VERSION=v28
 # Support Anvil Build_IDs
 [ ! "$SLUG_ID" ] && SLUG_ID="defaultslug"
 [ ! "$REQUEST_ID" ] && REQUEST_ID=$SLUG_ID
+[ ! "$STACK" ] && STACK=$DEFAULT_PYTHON_STACK
 
 # Sanitizing environment variables.
 unset GIT_DIR PYTHONHOME PYTHONPATH LD_LIBRARY_PATH LIBRARY_PATH
@@ -109,6 +110,13 @@ if [ -f $CACHE_DIR/.heroku/python-version ]; then
   DEFAULT_PYTHON_VERSION=$(cat $CACHE_DIR/.heroku/python-version)
 fi
 
+# Stack fallback for non-declared caches.
+if [ -f $CACHE_DIR/.heroku/python-stack ]; then
+  CACHED_PYTHON_STACK=$(cat $CACHE_DIR/.heroku/python-stack)
+else
+  CACHED_PYTHON_STACK=$DEFAULT_PYTHON_STACK
+fi
+
 # If no runtime given, assume default version.
 if [ ! -f runtime.txt ]; then
   echo $DEFAULT_PYTHON_VERSION > runtime.txt