diff --git a/docker/manylinux2014/all.sh b/docker/manylinux2014/all.sh
index 83dc0a6fd4176f492926fff029303aea5c6b1bfe..a9d816f92e5beaea2bdd18c12e412fef880c1052 100755
--- a/docker/manylinux2014/all.sh
+++ b/docker/manylinux2014/all.sh
@@ -5,7 +5,7 @@ docker run -v "$(pwd -P):/io" --rm -t manylinux rm -rf /io/dist /io/wheelhouse
 docker run -v "$(pwd -P):/io" --rm -t manylinux /scripts/setup.sh eigenpy
 docker run -v "$(pwd -P):/io" --rm -t manylinux /scripts/setup.sh hpp-fcl
 docker run -v "$(pwd -P):/io" --rm -t manylinux /scripts/setup.sh pinocchio
-for PYVER in 2.7 3.5 3.6 3.7 3.8
+for PYVER in 2.7 3.5 3.6 3.7 3.8 3.9
 do
     docker build -f test.Dockerfile --build-arg PYVER=$PYVER -t manylinux-test:$PYVER .
     docker run --rm -t manylinux-test:$PYVER
diff --git a/docker/manylinux2014/build/install_boost.sh b/docker/manylinux2014/build/install_boost.sh
index 991e12ba09f9a576bc02935de9b0276d6163b92d..107681bf38ac0505475520b367a9d30f6604d7f3 100755
--- a/docker/manylinux2014/build/install_boost.sh
+++ b/docker/manylinux2014/build/install_boost.sh
@@ -6,5 +6,5 @@ tar --bzip2 -xf boost_1_74_0.tar.bz2
 cd boost_1_74_0
 ./bootstrap.sh --prefix=/usr/local
 cp ../project-config.jam .
-./b2 install link=shared python=3.7 -j"$(nproc)"
+./b2 install link=shared python=2.7,3.5,3.6,3.7,3.8,3.9 -j"$(nproc)"
 rm -rf /build
diff --git a/docker/manylinux2014/build/project-config.jam b/docker/manylinux2014/build/project-config.jam
index a9bd8795582f81166e09947a9d50770f9ed96c70..ff9e0bbb5063e6175ab01854193d4535f34ffa65 100644
--- a/docker/manylinux2014/build/project-config.jam
+++ b/docker/manylinux2014/build/project-config.jam
@@ -18,7 +18,12 @@ project : default-build <toolset>gcc ;
 import python ;
 if ! [ python.configured ]
 {
+    using python : 2.7 : /usr/bin/python : /usr/include/python2.7 : /usr/lib ;
+    using python : 3.5 : /opt/python/cp35-cp35m/bin/python : /opt/python/cp35-cp35m/include/python3.5m : /opt/python/cp35-cp35m/lib ;
+    using python : 3.6 : /opt/python/cp36-cp36m/bin/python : /opt/python/cp36-cp36m/include/python3.6m : /opt/python/cp36-cp36m/lib ;
     using python : 3.7 : /opt/python/cp37-cp37m/bin/python : /opt/python/cp37-cp37m/include/python3.7m : /opt/python/cp37-cp37m/lib ;
+    using python : 3.8 : /opt/python/cp38-cp38/bin/python : /opt/python/cp38-cp38/include/python3.8 : /opt/python/cp38-cp38/lib ;
+    using python : 3.9 : /opt/python/cp39-cp39/bin/python : /opt/python/cp39-cp39/include/python3.9 : /opt/python/cp39-cp39/lib ;
 }
 
 # List of --with-<library> and --without-<library>
diff --git a/docker/manylinux2014/build/setup_python.sh b/docker/manylinux2014/build/setup_python.sh
index 622fb03f1840e40870cf2c6e5ffff1e87f59bfa7..f0e48959715867986fb166d8f11b362e329d241f 100755
--- a/docker/manylinux2014/build/setup_python.sh
+++ b/docker/manylinux2014/build/setup_python.sh
@@ -1,13 +1,21 @@
 #!/bin/bash -eux
 
-rm /opt/python/{cp35-cp35m,cp36-cp36m,cp38-cp38,cp39-cp39}
-
 # Install cmake, ninja and wheel
-PY37_BIN=/opt/python/cp37-cp37m/bin
-$PY37_BIN/pip install cmake ninja wheel
-ln -s $PY37_BIN/cmake /usr/bin/
-ln -s $PY37_BIN/ninja /usr/bin/
-ln -s $PY37_BIN/wheel /usr/bin/
+PY39_BIN=/opt/python/cp39-cp39/bin
+$PY39_BIN/pip install cmake ninja wheel
+ln -s $PY39_BIN/cmake /usr/bin/
+ln -s $PY39_BIN/ninja /usr/bin/
+ln -s $PY39_BIN/wheel /usr/bin/
+
+# Setup python 2.7
+yum -y install python-pip
+PY27_BIN=/opt/python/cp27-cp27mu/bin
+mkdir -p $PY27_BIN
+ln -s /usr/bin/python $PY27_BIN/
+ln -s /usr/bin/pip $PY27_BIN/
+touch $PY27_BIN/python2.7
+pip2 install --upgrade pip
+pip2 install scikit-build --user
 
 # Upgrade pip and install scikit-build
 for PYBIN in /opt/python/*/bin; do