diff --git a/tools/graphlan/export2graphlan/Snakefile b/tools/graphlan/export2graphlan/Snakefile
index 448fcf072da3d3c1defeca1d1af2873e4298017e..05b030ccba6c0ba01dd028d4b2c024e3e53428ae 100644
--- a/tools/graphlan/export2graphlan/Snakefile
+++ b/tools/graphlan/export2graphlan/Snakefile
@@ -1,5 +1,6 @@
-__export2graphlan_exec_command = config['export2graphlan'].get('exec_command', 'export2graphlan.py')
-__export2graphlan_options = config['export2graphlan'].get('options', "")
+__export2graphlan_exec_command = config.get('export2graphlan', {}).get('exec_command', 'export2graphlan.py')
+__export2graphlan_modules = config.get('export2graphlan', {}).get('modules')
+__export2graphlan_options = config.get('export2graphlan', {}).get('options', "")
 
 rule export2graphlan:
     input:
@@ -9,6 +10,11 @@ rule export2graphlan:
         annot = __export2graphlan_output_annotation
     params:
         exec_command = __export2graphlan_exec_command,
+        modules = __export2graphlan_modules,
         options = __export2graphlan_options
-    shell:
-        "{params.exec_command} {params.options} -i {input} --tree {output.tree} --annotation {output.annot}"
+    run:
+        command = []
+        if params.modules:
+            command.append("module load {params.modules}")
+        command.append("{params.exec_command} {params.options} -i {input} --tree {output.tree} --annotation {output.annot}")
+        shell(" && ".join(command))
\ No newline at end of file
diff --git a/tools/graphlan/graphlan/Snakefile b/tools/graphlan/graphlan/Snakefile
index 62f7a23dc8f775c5710d4ea7f83d8b54a9eba9fe..6617e1badeca1d1b5fb9d16db11a54a6fe2a81ce 100644
--- a/tools/graphlan/graphlan/Snakefile
+++ b/tools/graphlan/graphlan/Snakefile
@@ -1,5 +1,6 @@
-__graphlan_exec_command = config['graphlan'].get('exec_command', 'graphlan.py')
-__graphlan_options = config['graphlan'].get('options', "")
+__graphlan_exec_command = config.get('graphlan', {}).get('exec_command', 'graphlan.py')
+__graphlan_modules = config.get('graphlan', {}).get('modules')
+__graphlan_options = config.get('graphlan', {}).get('options', "")
 
 rule graphlan:
     input:
@@ -8,6 +9,11 @@ rule graphlan:
         __graphlan_output
     params:
         exec_command = __graphlan_exec_command,
+        modules = __graphlan_modules,
         options = __graphlan_options
-    shell:
-        "{params.exec_command} {params.options} {input} {output}"
+    run:
+        command = []
+        if params.modules:
+        	command.append("module load {params.modules}")
+        command.append("{params.exec_command} {params.options} {input} {output}")
+        shell(" && ".join(command))
\ No newline at end of file
diff --git a/tools/graphlan/graphlan_annotate/Snakefile b/tools/graphlan/graphlan_annotate/Snakefile
index 6a1b11736878fdfe639a2b686a8515f601357a5b..3a26ca972a6921e2c5040fd47abe94868db48b65 100644
--- a/tools/graphlan/graphlan_annotate/Snakefile
+++ b/tools/graphlan/graphlan_annotate/Snakefile
@@ -1,5 +1,6 @@
-__graphlan_annotate_exec_command = config['graphlan_annotate'].get('exec_command', 'graphlan_annotate.py')
-__graphlan_annotate_options = config['graphlan_annotate'].get('options', "")
+__graphlan_annotate_exec_command = config.get('graphlan_annotate', {}).get('exec_command', 'graphlan_annotate.py')
+__graphlan_annotate_modules = config.get('graphlan_annotate', {}).get('modules')
+__graphlan_annotate_options = config.get('graphlan_annotate', {}).get('options', "")
 
 rule graphlan_annotate:
     input:
@@ -9,6 +10,11 @@ rule graphlan_annotate:
         __graphlan_annotate_output
     params:
         exec_command = __graphlan_annotate_exec_command,
+        modules = __graphlan_annotate_modules,
         options = __graphlan_annotate_options
-    shell:
-        "{params.exec_command} {params.options} --annot {input.annot} {input.tree} {output}"
+    run:
+        command = []
+        if params.modules:
+            command.append("module load {params.modules}")
+        command.append("{params.exec_command} {params.options} --annot {input.annot} {input.tree} {output}")
+        shell(" && ".join(command))