diff --git a/bin/compile b/bin/compile
index 0ef5bc6676face350e54a869690b30e3051d1425..b106107153304dbe4a9dfe3c20a00f974a49f97e 100755
--- a/bin/compile
+++ b/bin/compile
@@ -146,16 +146,13 @@ bpwatch stop restore_cache
 
 mkdir -p $(dirname $PROFILE_PATH)
 
-# Make the directory for -e pip installations.
-mkdir -p /app/.heroku/src
-
 if [[ $BUILD_DIR != '/app' ]]; then
   # python expects to reside in /app, so set up symlinks
   # we will not remove these later so subsequent buildpacks can still invoke it
   ln -s $BUILD_DIR/.heroku/python /app/.heroku/python
   ln -s $BUILD_DIR/.heroku/vendor /app/.heroku/vendor
   ln -s $BUILD_DIR/.heroku/venv /app/.heroku/venv
-  # NOTE: /app/.heroku/src also exists, but is copied manually later.
+  ln -s $BUILD_DIR/.heroku/src /app/.heroku/src
 fi
 
 # Install Python.
@@ -202,9 +199,6 @@ set-default-env PYTHONPATH /app/
 # Install sane-default script for $WEB_CONCURRENCY and $FORWARDED_ALLOW_IPS.
 cp $ROOT_DIR/vendor/python.gunicorn.sh $GUNICORN_PROFILE_PATH
 
-# Deep copy the directory for -e pip installations
-deep-cp /app/.heroku/src $BUILD_DIR/.heroku/src
-
 # Experimental post_compile hook.
 bpwatch start post_compile
   source $BIN_DIR/steps/hooks/post_compile
diff --git a/bin/steps/pip-install b/bin/steps/pip-install
index 7dea3cea08e139646886b41bda308e265a7cc7ee..4bdbe1dc2dadba04d6d12da932d4e6b79515cc11 100755
--- a/bin/steps/pip-install
+++ b/bin/steps/pip-install
@@ -20,6 +20,9 @@ fi
 cp requirements.txt .heroku/python/requirements-declared.txt
 /app/.heroku/python/bin/pip freeze --disable-pip-version-check > .heroku/python/requirements-installed.txt
 
+# Replace egg-links with new paths for /app.
+find .heroku/python/lib/python*/site-packages/ -name "*.egg-link" | xargs -n 1 sed -i -e 's#$(pwd)/#/app/#'
+
 [ ! "$FRESH_PYTHON" ] && bpwatch stop pip_install
 [ "$FRESH_PYTHON" ] && bpwatch stop pip_install_first