diff --git a/python/setup.py b/python/setup.py
index c39fa4b0e7e9245165f465dde8c692859f368003..1a0065b3101d82395fd168dca08d65943ae15f38 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -1,5 +1,6 @@
 #!/usr/bin/env python
 
+from distutils.command.build_py import build_py as _build_py
 from distutils.core import setup
 import os
 
@@ -10,9 +11,20 @@ def read_version():
 LOOM_VERSION=read_version()
 print("LOOM_VERSION =", LOOM_VERSION)
 
+
+class build_protoc(_build_py):
+    """Also calls protoc"""
+    def run(self):
+        os.system("sh ./generate.sh")
+        _build_py.run(self)
+
+
+
 setup(name='loom',
       version=LOOM_VERSION,
       description='Python interface for Loom - workflow system',
       author='Loom team',
       url='',
-      packages=['loom'])
+      packages=['loom'],
+      cmdclass={'build_py': build_protoc}
+      )