diff --git a/bob/devtools/build.py b/bob/devtools/build.py
index fdc8d86e6a410c2610e87cc209b2da864a5c9c55..986634b4aa975461f3f8b710617b60a7ec2e9a42 100644
--- a/bob/devtools/build.py
+++ b/bob/devtools/build.py
@@ -716,7 +716,9 @@ def base_build(
         return conda_build.api.build(recipe_dir, config=conda_config)
 
 
-def load_packages_from_conda_build_config(conda_build_config, condarc_options):
+def load_packages_from_conda_build_config(
+    conda_build_config, condarc_options, with_pins=False
+):
     with open(conda_build_config, "r") as f:
         content = f.read()
 
@@ -734,7 +736,15 @@ def load_packages_from_conda_build_config(conda_build_config, condarc_options):
 
     package_names_map = package_pins.pop("package_names_map")
 
-    packages = [package_names_map.get(p, p) for p in package_pins.keys()]
+    if with_pins:
+        # NB : in pins, need to strip the occasional " cuda*" suffix
+        # tensorflow=x.x.x cuda* -> tensorflow=x.x.x
+        packages = [
+            f"{package_names_map.get(p, p)}={str(v[0]).split(' ')[0]}"
+            for p, v in package_pins.items()
+        ]
+    else:
+        packages = [package_names_map.get(p, p) for p in package_pins.keys()]
 
     return packages, package_names_map
 
diff --git a/bob/devtools/scripts/install_deps.py b/bob/devtools/scripts/install_deps.py
new file mode 100644
index 0000000000000000000000000000000000000000..ac266ddc751b3d3b39ca6aff66a5968f1dbc680a
--- /dev/null
+++ b/bob/devtools/scripts/install_deps.py
@@ -0,0 +1,52 @@
+"""Create an environment with all external dependencies listed in bob/devtools/data/conda_build_config.yaml"""
+import click
+
+
+@click.command(
+    epilog="""Example:
+  1. Creates an environment called `myenv' containing all external bob dependencies:
+
+python bob/devtools/scripts/install_deps.py  myenv
+
+2. The version of python to solve with can be provided as option:
+
+python bob/devtools/scripts/install_deps.py  myenv --python=3.8
+
+"""
+)
+@click.argument("env_name", nargs=1)
+@click.option("--python", required=True, help="Python version to pin, e.g. 3.8")
+def install_deps(env_name, python):
+    import subprocess
+
+    from bob.devtools.build import load_packages_from_conda_build_config
+
+    conda_config_path = "bob/devtools/data/conda_build_config.yaml"
+
+    packages, package_names_map = load_packages_from_conda_build_config(
+        conda_config_path, {"channels": []}, with_pins=True
+    )
+
+    # ask mamba to create an environment with the packages
+    try:
+        _ = subprocess.run(
+            [
+                "mamba",
+                "create",
+                "--override-channels",
+                "-c",
+                "conda-forge",
+                "-n",
+                env_name,
+                f"python={python}",
+            ]
+            + packages,
+            check=True,
+        )
+    except subprocess.CalledProcessError as e:
+        print(e.output.decode())
+        raise e
+
+
+if __name__ == "__main__":
+    install_deps()