Skip to content

Commit

Permalink
setup.py: fix import error reporting for cythonize import, see borgba…
Browse files Browse the repository at this point in the history
…ckup#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.
  • Loading branch information
ThomasWaldmann committed May 12, 2024
1 parent 7baf8be commit f2c05e1
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@

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__)]

Expand Down Expand Up @@ -80,7 +83,9 @@ def __init__(self, *args, **kwargs):

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}
Expand Down

0 comments on commit f2c05e1

Please sign in to comment.