diff --git a/tests/travis_install.sh b/tests/travis_install.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ed83d78348c43850b22012191017cdddd7ac2ab5
--- /dev/null
+++ b/tests/travis_install.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+# This script is meant to be called by the "install" step defined in
+# .travis.yml. See http://docs.travis-ci.com/ for more details.
+# The behavior of the script is controlled by environment variabled defined
+# in the .travis.yml in the top level folder of the project.
+#
+# This script is inspired by Scikit-Learn (http://scikit-learn.org/)
+#
+# THIS SCRIPT IS SUPPOSED TO BE AN EXAMPLE. MODIFY IT ACCORDING TO YOUR NEEDS!
+
+set -e
+
+if [[ "$DISTRIB" == "conda" ]]; then
+    # Deactivate the travis-provided virtual environment and setup a
+    # conda-based environment instead
+    deactivate
+
+    if [[ -f "$HOME/miniconda/bin/conda" ]]; then
+        echo "Skip install conda [cached]"
+    else
+        # By default, travis caching mechanism creates an empty dir in the
+        # beginning of the build, but conda installer aborts if it finds an
+        # existing folder, so let's just remove it:
+        rm -rf "$HOME/miniconda"
+
+        # Use the miniconda installer for faster download / install of conda
+        # itself
+        wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh \
+            -O miniconda.sh
+        chmod +x miniconda.sh && ./miniconda.sh -b -p $HOME/miniconda
+    fi
+    export PATH=$HOME/miniconda/bin:$PATH
+    # Make sure to use the most updated version
+    conda update --yes conda
+
+    # Configure the conda environment and put it in the path using the
+    # provided versions
+    # (prefer local venv, since the miniconda folder is cached)
+    conda create -p ./.venv --yes python=${PYTHON_VERSION} pip virtualenv
+    source activate ./.venv
+    alias pip3='python -m pip'
+    shopt -s expand_aliases
+fi
+
+# for all
+pip3 install -U pip wheel setuptools
+pip3 install -U cppimport pybind11
+pip3 install tox
+pip3 install codecov
+pip3 install sphinx
+
+if [[ -z "$PYSTENCIL_FROM_PIP" ]]; then
+    pip install git+https://github.com/mabau/pystencils.git
+else
+    pip install pystencils
+fi
+pip install flake8
+
+if [[ "$COVERAGE" == "true" ]]; then
+    pip3 install -U pytest-cov pytest-virtualenv coverage coveralls flake8
+fi
+
+
+travis-cleanup() {
+    printf "Cleaning up environments ... "  # printf avoids new lines
+    if [[ "$DISTRIB" == "conda" ]]; then
+        # Force the env to be recreated next time, for build consistency
+        source deactivate
+        conda remove -p ./.venv --all --yes
+        rm -rf ./.venv
+    fi
+    echo "DONE"
+}