diff --git a/debian/changelog b/debian/changelog
index 07209b648369639b0d45bfe8fc48622a4c7779f0..197dfe0d55c970694ead2a68aecccfa88aefbd27 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,6 +7,11 @@ python-defaults (2.6.5-6) unstable; urgency=low
     - block python package transitions via ${python:Breaks} or
       ${python:Depends} (Breaks will be used if available)
     - recognize more requires.txt patterns in debpython.pydist
+  * pyversions.py:
+    - print error message if file cannot be opened (closes:
+      521508, thanks to Carl Chenet for the original patch)
+    - print nice error message if computed set of supported versions is empty
+      (closes: 583392)
 
   [ Scott Kitterman ]
   * Merge changes back from Ubuntu package:
diff --git a/debian/pyversions.py b/debian/pyversions.py
index 1e841bc074eab989439e6a11b33ce8695a33a135..d84b9367737a3bbe90f906e5e4fef3e07077da9c 100644
--- a/debian/pyversions.py
+++ b/debian/pyversions.py
@@ -15,7 +15,11 @@ def read_default(name=None):
     if not _defaults:
         if os.path.exists('/usr/share/python/debian_defaults'):
             config = SafeConfigParser()
-            config.readfp(file('/usr/share/python/debian_defaults'))
+            try:
+                config.readfp(file('/usr/share/python/debian_defaults'))
+            except IOError, msg:
+                print msg
+                sys.exit(1)
             _defaults = config
     if _defaults and name:
         try:
@@ -206,9 +210,9 @@ def requested_versions(vstring, version_only=False):
         if 'vexact' in vinfo:
             versions.update(vinfo['vexact'])
     else:
-        raise ValueError, 'No python versions in version string'
+        raise ValueError, 'No Python versions in version string'
     if not versions:
-        raise PyCentralEmptyValueError, 'empty set of versions'
+        raise ValueError('computed set of supported versions is empty')
     if version_only:
         return versions
     else:
@@ -238,7 +242,12 @@ def extract_pyversion_attribute(fn, pkg):
     version = None
     sversion = None
     section = None
-    for line in file(fn):
+    try:
+        fp = file(fn, 'r')
+    except IOError, msg:
+        print "Cannot open %s: %s" % (fn, msg)
+        sys.exit(2)
+    for line in fp:
         line = line.strip()
         if line == '':
             if section == None:
@@ -305,7 +314,11 @@ def requested_versions_bis(vstring, version_only=False):
     return versions
 
 def extract_pyversion_attribute_bis(fn):
-    vstring = file(fn).readline().rstrip('\n')
+    try:
+        vstring = file(fn).readline().rstrip('\n')
+    except IOError, msg:
+        print msg
+        sys.exit(3)
     return vstring
 
 def main():
@@ -366,6 +379,9 @@ def main():
                         sys.stderr.write("%s: missing debian/pyversions file, fall back to supported versions\n" \
                                          % program)
                         vs = supported_versions(opts.version_only)
+                except ValueError, e:
+                    sys.stderr.write("%s: %s\n" % (program, e))
+                    sys.exit(4)
             else:
                 vs = requested_versions(versions, opts.version_only)
             print ' '.join(vs)