diff --git a/scripts/install-centos.sh b/scripts/install-centos.sh
index ccd40d339..3c39ca47e 100755
--- a/scripts/install-centos.sh
+++ b/scripts/install-centos.sh
@@ -34,7 +34,7 @@ create_virtualenv()
     [ ! -d ${PYTHONDIR} ] && virtualenv ${PYTHONDIR}
 
     # Install/update dependencies
-    ${PYTHONDIR}/bin/pip install cffi==1.6.0 pyserial==3.2.1 greenlet==0.4.10
+    ${PYTHONDIR}/bin/pip install -r ${SRCDIR}/scripts/klippy-requirements.txt
 }
 
 # Step 3: Install startup script
diff --git a/scripts/install-octopi.sh b/scripts/install-octopi.sh
index a260daae5..bec01d1ae 100755
--- a/scripts/install-octopi.sh
+++ b/scripts/install-octopi.sh
@@ -37,7 +37,7 @@ create_virtualenv()
     [ ! -d ${PYTHONDIR} ] && virtualenv ${PYTHONDIR}
 
     # Install/update dependencies
-    ${PYTHONDIR}/bin/pip install cffi==1.6.0 pyserial==3.2.1 greenlet==0.4.10
+    ${PYTHONDIR}/bin/pip install -r ${SRCDIR}/scripts/klippy-requirements.txt
 }
 
 # Step 3: Install startup script
diff --git a/scripts/install-ubuntu-18.04.sh b/scripts/install-ubuntu-18.04.sh
index 0c211dabd..e21bd1422 100755
--- a/scripts/install-ubuntu-18.04.sh
+++ b/scripts/install-ubuntu-18.04.sh
@@ -40,7 +40,7 @@ create_virtualenv()
     [ ! -d ${PYTHONDIR} ] && virtualenv ${PYTHONDIR}
 
     # Install/update dependencies
-    ${PYTHONDIR}/bin/pip install cffi==1.6.0 pyserial==3.2.1 greenlet==0.4.10
+    ${PYTHONDIR}/bin/pip install -r ${SRCDIR}/scripts/klippy-requirements.txt
 }
 
 # Step 3: Install startup script
diff --git a/scripts/klippy-requirements.txt b/scripts/klippy-requirements.txt
new file mode 100644
index 000000000..94152f954
--- /dev/null
+++ b/scripts/klippy-requirements.txt
@@ -0,0 +1,7 @@
+# This file describes the Python virtualenv package requirements for
+# the Klipper host software (Klippy).  These package requirements are
+# typically installed via the command:
+#   pip install -r virtualenv-requirements.txt
+cffi==1.6.0
+pyserial==3.2.1
+greenlet==0.4.10
diff --git a/scripts/travis-install.sh b/scripts/travis-install.sh
index 18eb04775..5705e7d3d 100755
--- a/scripts/travis-install.sh
+++ b/scripts/travis-install.sh
@@ -62,4 +62,4 @@ fi
 echo "=============== Install python virtualenv"
 cd ${MAIN_DIR}
 virtualenv ${BUILD_DIR}/python-env
-${BUILD_DIR}/python-env/bin/pip install cffi==1.6.0 pyserial==3.2.1 greenlet==0.4.10
+${BUILD_DIR}/python-env/bin/pip install -r ${MAIN_DIR}/scripts/klippy-requirements.txt