diff --git a/trac/web/__init__.py b/trac/web/__init__.py
--- a/trac/web/__init__.py
+++ b/trac/web/__init__.py
@@ -3,11 +3,14 @@
 # PYTHON_EGG_CACHE variable is set from there
 #
 # TODO: Remove this once the Genshi zip_safe issue has been resolved.
-try:
-    import mod_python.apache
-    import sys
-    if 'trac.web.modpython_frontend' in sys.modules:
+from pkg_resources import get_provider, ZipProvider
+if isinstance(get_provider('genshi'), ZipProvider):
+    try:
+        import mod_python.apache
+        import sys
+        if 'trac.web.modpython_frontend' in sys.modules:
+            from trac.web.api import *
+    except ImportError:
         from trac.web.api import *
-except ImportError:
+else:
     from trac.web.api import *
-

