diff --git a/CHANGELOG.md b/CHANGELOG.md
index 108a0eabbd91650676615e94fed68baf9291c879..1a5e3a0e032e019be3728732e9a62ca9431ed009 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Python Buildpack Changelog
 
+# 141 (2018-10-10)
+
+Switch to cautious upgrade for Pipenv install to ensure the pinned pip version
+is used with Pipenv
+
 # 140 (2018-10-09)
 
 Add support for detecting SLUGIFY_USES_TEXT_UNIDECODE, which is required to
diff --git a/bin/steps/pip-install b/bin/steps/pip-install
index 5de8e3db529ac27516124014ec32daf2bb6dc924..d7ffa82d48a7cd91fe3750649f5653741db68640 100755
--- a/bin/steps/pip-install
+++ b/bin/steps/pip-install
@@ -13,7 +13,7 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
     # and makes them accessible to the pip install process.
     #
     # PIP_EXTRA_INDEX_URL allows for an alternate pypi URL to be used.
-    if [[ -r $ENV_DIR/PIP_EXTRA_INDEX_URL ]]; then
+    if [[ -r "$ENV_DIR/PIP_EXTRA_INDEX_URL" ]]; then
         PIP_EXTRA_INDEX_URL="$(cat "$ENV_DIR/PIP_EXTRA_INDEX_URL")"
         export PIP_EXTRA_INDEX_URL
         mcount "buildvar.PIP_EXTRA_INDEX_URL"
@@ -22,7 +22,7 @@ if [ ! "$SKIP_PIP_INSTALL" ]; then
     set +e
 
     # Set SLUGIFY_USES_TEXT_UNIDECODE, required for Airflow versions >=1.10
-    if [[ -r $ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE ]]; then
+    if [[ -r "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE" ]]; then
         SLUGIFY_USES_TEXT_UNIDECODE="$(cat "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE")"
         export SLUGIFY_USES_TEXT_UNIDECODE
         mcount "buildvar.SLUGIFY_USES_TEXT_UNIDECODE"
diff --git a/bin/steps/pipenv b/bin/steps/pipenv
index 31b479ba1490e3f23af2ed1e2571cf9e50ca74d7..1190621217785a9d06fceafcdb967c6dc58a64b0 100755
--- a/bin/steps/pipenv
+++ b/bin/steps/pipenv
@@ -20,7 +20,6 @@ if [[ -f Pipfile.lock ]]; then
                 export SKIP_PIPENV_INSTALL=1
                 export SKIP_PIP_INSTALL=1
             fi
-
         fi
     fi
 fi
@@ -40,14 +39,14 @@ if [ ! "$SKIP_PIPENV_INSTALL" ]; then
         # and makes them accessible to the pip install process.
         #
         # PIP_EXTRA_INDEX_URL allows for an alternate pypi URL to be used.
-        if [[ -r $ENV_DIR/PIP_EXTRA_INDEX_URL ]]; then
+        if [[ -r "$ENV_DIR/PIP_EXTRA_INDEX_URL" ]]; then
             PIP_EXTRA_INDEX_URL="$(cat "$ENV_DIR/PIP_EXTRA_INDEX_URL")"
             export PIP_EXTRA_INDEX_URL
             mcount "buildvar.PIP_EXTRA_INDEX_URL"
         fi
 
         # Set SLUGIFY_USES_TEXT_UNIDECODE, required for Airflow versions >=1.10
-        if [[ -r $ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE ]]; then
+        if [[ -r "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE" ]]; then
             SLUGIFY_USES_TEXT_UNIDECODE="$(cat "$ENV_DIR/SLUGIFY_USES_TEXT_UNIDECODE")"
             export SLUGIFY_USES_TEXT_UNIDECODE
             mcount "buildvar.SLUGIFY_USES_TEXT_UNIDECODE"
@@ -56,7 +55,10 @@ if [ ! "$SKIP_PIPENV_INSTALL" ]; then
         export PIPENV_VERSION="2018.5.18"
 
         # Install pipenv.
-        /app/.heroku/python/bin/pip install pipenv==$PIPENV_VERSION --upgrade &> /dev/null
+        # Due to weird old pip behavior and pipenv behavior, pipenv upgrades pip
+        # to latest if only --upgrade is specified. Specify upgrade strategy to
+        # avoid this eager behavior.
+        /app/.heroku/python/bin/pip install pipenv==$PIPENV_VERSION --upgrade --upgrade-strategy only-if-needed &> /dev/null
 
         # Install the dependencies.
         if [[ ! -f Pipfile.lock ]]; then