Browse Source

setup.py: fix import error reporting for cythonize import, see #8208

Looks like borg's setup.py has hidden the real cause of a cythonize ImportError.

There are basically 2 cases:
- either there is no Cython installed, then the import fails because the module can not be found, or
- there is some issue within Cython and the import fails due to that.

It's important not to hide the real cause, especially if we run into case 2.

case 1 is kind of expected and frequent, case 2 is rare.
Thomas Waldmann 1 year ago
parent
commit
b067f0fba2
1 changed files with 7 additions and 2 deletions
  1. 7 2
      setup.py

+ 7 - 2
setup.py

@@ -16,8 +16,11 @@ from setuptools.command.sdist import sdist
 
 try:
     from Cython.Build import cythonize
-except ImportError:
+    cythonize_import_error_msg = None
+except ImportError as exc:
+    # either there is no Cython installed or there is some issue with it.
     cythonize = None
+    cythonize_import_error_msg = "ImportError: " + str(exc)
 
 sys.path += [os.path.dirname(__file__)]
 
@@ -80,7 +83,9 @@ else:
 
     cython_c_files = [fn.replace(".pyx", ".c") for fn in cython_sources]
     if not on_rtd and not all(os.path.exists(path) for path in cython_c_files):
-        raise ImportError("The GIT version of Borg needs Cython. Install Cython or use a released version.")
+        raise ImportError("The GIT version of Borg needs a working Cython. " +
+                          "Install or fix Cython or use a released borg version. " +
+                          "Importing cythonize failed with: " + cythonize_import_error_msg)
 
 
 cmdclass = {"build_ext": build_ext, "sdist": Sdist}