<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>On 10/08/2018 12:29 AM, Terry Reedy wrote:
      <br>
    </p>
    <blockquote type="cite" style="color: #000000;">On 10/3/2018 4:29
      PM, Marcus Harnisch wrote:
      <br>
      <br>
      <blockquote type="cite" style="color: #000000;">When trying to
        import lzma on one of my machines, I was suprised to get a
        normal import error like for any other module. </blockquote>
      What was the traceback and message?  Did you get an import error
      for one of the three imports in lzma.py.  I don't know why you
      would expect anything else.  Any import in any stdlib module can
      potential fail if the file is buggy, corrupted, or missing.
      <br>
    </blockquote>
    <br>
    $ /usr/bin/python3
    <br>
    Python 3.7.0 (default, Oct  4 2018, 03:21:59)
    <br>
    [GCC 8.2.0] on linux
    <br>
    Type "help", "copyright", "credits" or "license" for more
    information.<br>
    >>> import lzma
    <br>
    Traceback (most recent call last):
    <br>
      File "<stdin>", line 1, in <module>
    <br>
      File "/usr/lib/python3.7/lzma.py", line 27, in <module>
    <br>
    ModuleNotFoundError: No module named '_lzma'<br>
    >>><br>
    <br>
    <blockquote type="cite" style="color: #000000;">> According to
      the docs
      <br>
      <blockquote type="cite" style="color: #000000;">lzma has been part
        of stdlib since 3.3. Further digging revealed that the error is
        due to the fact that xz wasn't compiled in when building Python.
        <br>
      </blockquote>
      <br>
      Perhaps this is a buggy build.
      <br>
    </blockquote>
    This, I reckon, depends on the perspective and the definition of
    “buggy”. If the build process finishes without error, can we assume
    that the build is not buggy? If we make claims along the lines of
    “nobody in their right mind would build Python without lzma” it
    would only be fair to break the build if liblzma can't be detected.
    <br>
    Unless I missed anything it doesn't happen until after the build has
    finished successfully, that a message is printed which lists the
    modules which couldn't be detected by setup.py.
    <br>
    Here is a list of modules, which I believe are affected:
    <br>
    <br>
    $ grep -F missing.append setup.py
    <br>
                missing.append('spwd')
    <br>
                missing.append('readline')
    <br>
                missing.append('_ssl')
    <br>
                missing.append('_hashlib')
    <br>
                missing.append('_sqlite3')
    <br>
                    missing.append('_dbm')
    <br>
                missing.append('_gdbm')
    <br>
                missing.append('nis')
    <br>
                missing.append('_curses')
    <br>
                missing.append('_curses_panel')
    <br>
                        missing.append('zlib')
    <br>
                    missing.append('zlib')
    <br>
                missing.append('zlib')
    <br>
                missing.append('_bz2')
    <br>
                missing.append('_lzma')
    <br>
                missing.append('_elementtree')
    <br>
                missing.append('ossaudiodev')
    <br>
                missing.append('_tkinter')
    <br>
                missing.append('_uuid')
    <br>
    <br>
    <blockquote type="cite" style="color: #000000;">  Have you
      complained to the distributor?
      <br>
    </blockquote>
    After finding the root cause of the missing import I did file a
    request for including lzma in future releases of the distribution.
    <br>
    <br>
    All I am asking is that unsuspecting users not be left in the dark
    when it comes to debugging unexpected import errors. I believe a
    missing stdlib module qualifies for “unexpected”. This could happen
    in form of documentation or by means of an import error handler that
    prints some helpful message in case that a stdlib module couldn't be
    found.
    <br>
    <br>
    Regards,
    <br>
    Marcus<br>
  </body>
</html>