From b067f0fba2d27c5414309af1f608879eab6672dc Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 12 May 2024 13:39:57 +0200 Subject: [PATCH] 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. --- setup.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 7dcedb90d..93a0aae77 100644 --- a/setup.py +++ b/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}