diff --git a/CHANGELOG.md b/CHANGELOG.md
index c6b13c563c16f07090b5633038df3f0a931c6088..80d88287ed172ac1ac4af4f9e22b33dd0f97f2c7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
 # Python Buildpack Changelog
 
+# 106
+
+Don't install packages that could mess up packaging.
+
+- The Python buildpack will automatically remove `six`, `pyparsing`, `appdirs`,
+  `setuptools`, and `distribute` from a `requirements.txt` file now, as these
+  packages are provided by the Python buildpack.
+
+# 105
+
+Improvements to output messaging.
+
 # 104
 
 General improvements.
diff --git a/bin/compile b/bin/compile
index ab60dbe7566d4cb6d30d33fc46c93ac4f382ded4..78b63bcd2e0d5acc1ca4bc95e6b7364ed73584e1 100755
--- a/bin/compile
+++ b/bin/compile
@@ -171,15 +171,19 @@ sub-env $BIN_DIR/steps/geo-libs
 # GDAL support.
 source $BIN_DIR/steps/gdal
 
+# Uninstall removed dependencies with Pip.
+let start=$(nowms)
+source $BIN_DIR/steps/pip-uninstall
+mtime "pip.uninstall.time" "${start}"
+
+# Cleanup requirements.txt
+source $BIN_DIR/steps/setuptools
+
 # Install dependencies with Pip (where the magic happens).
 let start=$(nowms)
 source $BIN_DIR/steps/pip-install
 mtime "pip.install.time" "${start}"
 
-# Uninstall removed dependencies with Pip.
-let start=$(nowms)
-source $BIN_DIR/steps/pip-uninstall
-mtime "pip.uninstall.time" "${start}"
 
 # Support for NLTK corpora.
 let start=$(nowms)
diff --git a/bin/steps/setuptools b/bin/steps/setuptools
new file mode 100755
index 0000000000000000000000000000000000000000..3bfc8ed37ca4b292eaf3aebedb2160f5b5352c7c
--- /dev/null
+++ b/bin/steps/setuptools
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+# Syntax sugar.
+source $BIN_DIR/utils
+
+puts-step "Removing packaging utilities from requirements.txt."
+
+if [[ -f requirements.txt ]]; then
+    pip-clean requirements.txt
+fi
+
diff --git a/vendor/pip-pop/pip-clean b/vendor/pip-pop/pip-clean
new file mode 100755
index 0000000000000000000000000000000000000000..b17e4619c39a46d905fb4714cd188870f78d4a84
--- /dev/null
+++ b/vendor/pip-pop/pip-clean
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""Usage:
+  pip-clean <req-file>
+
+Options:
+  -h --help     Show this screen.
+"""
+from docopt import docopt
+
+BAD_PACKAGES = ['appdirs', 'packaging', 'pyparsing', 'six', 'setuptools', 'distribute']
+
+
+def good_package(line):
+    package_name = line.split('=')[0].split('<')[0].split('>')[0].split(' ')[0].split('#')[0].split('\n')[0]
+    return package_name not in BAD_PACKAGES
+
+def main():
+    args = docopt(__doc__, version='pip-clean')
+    req_file = args['<req-file>']
+
+    with open(req_file, 'r') as f:
+        # Iterate over every line in the requirements file.
+        lines = [line for line in f if good_package(line)]
+
+    # Write the requirements file to disk.
+    with open(req_file, 'w') as f:
+        f.write(''.join(lines))
+
+
+if __name__ == '__main__':
+    main()
diff --git a/vendor/pip-pop/requirements.txt b/vendor/pip-pop/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e2541fa2ec3a46b84e729f985220c7969be62cf8
--- /dev/null
+++ b/vendor/pip-pop/requirements.txt
@@ -0,0 +1,17 @@
+certifi==2017.4.17
+chardet==3.0.3
+dateparser
+humanize==0.5.1
+idna==2.5
+maya==0.3.2
+pendulum==1.2.1
+python-dateutil==2.6.0
+pytz==2017.2
+pytzdata==2017.2
+regex==2017.5.26
+requests==2.17.3
+ruamel.ordereddict==0.4.9
+ruamel.yaml==0.14.12
+tzlocal==1.4
+urllib3==1.21.1
+