diff --git a/bin/compile b/bin/compile
index 0466e8e65b30b6ce10dd5e0b0f95b60da0f1b9ab..d3247fcf1aba385b1af31080e99478924d96cf42 100755
--- a/bin/compile
+++ b/bin/compile
@@ -224,14 +224,24 @@ mtime "collectstatic.time" "${start}"
 # Create .profile script for application runtime environment variables.
 set_env PATH "\$HOME/.heroku/python/bin:\$PATH"
 set_env PYTHONUNBUFFERED true
-set_env PYTHONHOME /app/.heroku/python
+set_env PYTHONHOME "\$HOME/.heroku/python"
 
-set_env LIBRARY_PATH "/app/.heroku/vendor/lib:/app/.heroku/python/lib:\$LIBRARY_PATH"
-set_env LD_LIBRARY_PATH "/app/.heroku/vendor/lib:/app/.heroku/python/lib:\$LD_LIBRARY_PATH"
+set_env LIBRARY_PATH "\$HOME/.heroku/vendor/lib:\$HOME/.heroku/python/lib:\$LIBRARY_PATH"
+set_env LD_LIBRARY_PATH "\$HOME/.heroku/vendor/lib:\$HOME/.heroku/python/lib:\$LD_LIBRARY_PATH"
 
 set_default_env LANG en_US.UTF-8
 set_default_env PYTHONHASHSEED random
-set_default_env PYTHONPATH /app/
+set_default_env PYTHONPATH "\$HOME"
+
+# python expects to be in /app, if at runtime, it is not, set
+# up symlinks... this can occur when the subdir buildpack is used
+cat <<EOT >> "$PROFILE_PATH"
+if [[ \$HOME != "/app" ]]; then
+    mkdir -p /app/.heroku
+    ln -nsf "\$HOME/.heroku/python" /app/.heroku/python
+    ln -nsf "\$HOME/.heroku/vendor" /app/.heroku/vendor
+fi
+EOT
 
 # Install sane-default script for $WEB_CONCURRENCY and $FORWARDED_ALLOW_IPS.
 cp "$ROOT_DIR/vendor/WEB_CONCURRENCY.sh" "$WEB_CONCURRENCY_PROFILE_PATH"