diff --git a/product/ERP5Type/tests/runUnitTest.py b/product/ERP5Type/tests/runUnitTest.py
index 5956388172daf2c11104a37e949a815b13914bd5..1c7b3a09319dbfb281bf79b8d1c9fda9738efd74 100755
--- a/product/ERP5Type/tests/runUnitTest.py
+++ b/product/ERP5Type/tests/runUnitTest.py
@@ -191,19 +191,30 @@ if 'SOFTWARE_HOME' in os.environ:
   # software_home is zope_home/lib/python, remove lib/python
   zope_home = os.path.split(os.path.split(software_home)[0])[0]
 else:
+  common_paths = [
+    '/usr/lib/erp5/lib/python',
+    '/usr/lib64/zope/lib/python',
+    '/usr/lib/zope2.8/lib/python',
+    '/usr/lib/zope/lib/python',
+  ]
+  # maybe SOFTWARE_HOME is already in sys.path
+  try:
+    import Zope2
+  except ImportError:
+    pass
+  else:
+    common_paths.insert(0, os.path.dirname(os.path.dirname(Zope2.__file__)))
   if WIN:
     erp5_home = os.path.sep.join(
         tests_framework_home.split(os.path.sep)[:-4])
-    zope_home = os.path.join(erp5_home, 'Zope')
-  elif os.path.isdir('/usr/lib/erp5/lib/python'):
-    zope_home = '/usr/lib/erp5'
-  elif os.path.isdir('/usr/lib64/zope/lib/python'):
-    zope_home = '/usr/lib64/zope'
-  elif os.path.isdir('/usr/lib/zope2.8/lib/python'):
-    zope_home = '/usr/lib/zope2.8'
+    common_paths.insert(0, os.path.join(erp5_home, 'Zope', 'lib', 'python'))
+
+  for software_home in common_paths:
+    if os.path.isdir(software_home):
+      break
   else:
-    zope_home = '/usr/lib/zope'
-  software_home = os.path.join(zope_home, 'lib', 'python')
+    sys.exit('No Zope2 software_home found')
+  zope_home = os.path.dirname(os.path.dirname(software_home))
   os.environ['SOFTWARE_HOME'] = software_home
 
 # SOFTWARE_HOME must be early in sys.path, otherwise some products will