diff --git a/debian/changelog b/debian/changelog
index df15c1f03819b340ad6bb62e4170aa4b8ce8cbdf..8cf5dc36138e4ee8b4128f83dc70a40347ce8cde 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,7 @@ python-defaults (2.6.6-12) UNRELEASED; urgency=low
     - use Depends: python (<< 2.X), python (>= 2.Y) rather than Breaks
       in packages with public modules (after a discussion on debian-devel
       mailing list)
+    - do not try to check dangling symlinks's shebang (closes: 619005)
 
   [ Scott Kitterman ]
   * Start Python Policy updates for Wheezy
diff --git a/dh_python2 b/dh_python2
index f73283f83bd2100f0ba85f4badc7ac9fefda66b7..f7d6890e7695f9eba5f07b1a1323d90686e15390 100755
--- a/dh_python2
+++ b/dh_python2
@@ -371,12 +371,13 @@ def scan(package, dname=None):
                     continue
 
             elif private_dir:
-                mode = os.stat(join(root, fn))[ST_MODE]
-                if mode & S_IXUSR or mode & S_IXGRP or mode & S_IXOTH:
-                    res = shebang2pyver(join(root, fn))
-                    if res:
-                        r['private_dirs'].setdefault(private_dir, {})\
-                            .setdefault('shebangs', set()).add(res)
+                if exists(join(root, fn)):
+                    mode = os.stat(join(root, fn))[ST_MODE]
+                    if mode & S_IXUSR or mode & S_IXGRP or mode & S_IXOTH:
+                        res = shebang2pyver(join(root, fn))
+                        if res:
+                            r['private_dirs'].setdefault(private_dir, {})\
+                                .setdefault('shebangs', set()).add(res)
 
             if public_dir or private_dir:
                 if fext == 'so':