diff --git a/containers/jug/dev.Dockerfile b/containers/jug/dev.Dockerfile
index 72f880ed635c68ea131f69fd394febf4ac097086..17d522c1f0e119d4ced686997f05202cbe921618 100644
--- a/containers/jug/dev.Dockerfile
+++ b/containers/jug/dev.Dockerfile
@@ -13,8 +13,7 @@ RUN --mount=type=cache,target=/var/cache/apt                            \
  && apt-get -yqq update                                                 \
  && apt-get -yqq install --no-install-recommends                        \
         python3                                                         \
-        python3-pip                                                     \
-        python3-setuptools                                              \
+        python3-distutils                                               \
         python-is-python3                                               \
  && rm -rf /var/lib/apt/lists/*
 
@@ -127,7 +126,17 @@ RUN --mount=type=cache,target=/var/cache/spack-mirror                   \
  && spack clean -a                                                      \
  && exit $status
 
-## extra post-spack steps
+## Extra post-spack steps:
+##   - Python packages
+COPY requirements.txt /usr/local/etc/requirements.txt
+RUN --mount=type=cache,target=/var/cache/pip                            \
+    echo "Installing additional python packages"                        \
+ && cd /opt/spack-environment && spack env activate .                   \
+ && pip install --trusted-host pypi.org                                 \
+                --trusted-host files.pythonhosted.org                   \
+                --cache-dir /var/cache/pip                              \
+                --requirement /usr/local/etc/requirements.txt
+
 ## Including some small fixes:
 ##   - Somehow PODIO env isn't automatically set, 
 ##   - and Gaudi likes BINARY_TAG to be set
@@ -144,32 +153,9 @@ RUN cd /opt/spack-environment                                           \
  && echo "export PODIO=$(spack location -i podio);"                     \
         >> /etc/profile.d/z10_spack_environment.sh                      \
  && echo -n ""                                                          \
- && echo "Installing additional python packages"                        \
- && pip install --trusted-host pypi.org                                 \
-                --trusted-host files.pythonhosted.org                   \
-                --no-cache-dir                                          \
-        awkward                                                         \
-        boto3                                                           \
-        ipython                                                         \
-        jupyter                                                         \
-        jupyterlab                                                      \
-        lmfit                                                           \
-        lxml                                                            \
-        matplotlib                                                      \
-        pandas                                                          \
-        pycairo                                                         \
-        pyunfold                                                        \
-        pyyaml                                                          \
-        scipy                                                           \
-        seaborn                                                         \
-        stashcp                                                         \
-        uproot                                                          \
-        yapf                                                            \
- && echo -n ""                                                          \
  && echo "Executing cmake patch for dd4hep 16.1"                        \                
  && sed -i "s/FIND_PACKAGE(Python/#&/" /usr/local/cmake/DD4hepBuild.cmake
 
-
 ## make sure we have the entrypoints setup correctly
 ENTRYPOINT []
 CMD ["bash", "--rcfile", "/etc/profile", "-l"]
diff --git a/containers/jug/requirements.txt b/containers/jug/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..09e3f52d1d94956a6236e6734dc8e6343dd717ab
--- /dev/null
+++ b/containers/jug/requirements.txt
@@ -0,0 +1,17 @@
+awkward
+boto3
+ipython
+jupyter
+jupyterlab
+lmfit
+lxml
+matplotlib
+pandas
+pycairo
+pyunfold
+pyyaml
+scipy
+seaborn
+stashcp
+uproot
+yapf
diff --git a/spack.yaml b/spack.yaml
index d84d5cd0d38e0d9740ee055d9f83566d6de3a1e5..ad4a2ae936b7d0c6ec706c4f96a133a917678dbd 100644
--- a/spack.yaml
+++ b/spack.yaml
@@ -28,6 +28,8 @@ spack:
     - python@3.9.6
     - py-numpy@1.20.1
     - py-pip@20.2
+    - py-setuptools@58.2.0
+    - py-wheel@0.36.2
     - qt +opengl
     - root@6.24.06 cxxstd=17 
           +fftw +fortran +gdml +http +mlp +pythia8