What is the meaning of "Failed building wheel for X" in pip install?

This is a truly popular question here at SO, but none of the many answers I have looked at, clearly explain what this error really mean, and why it occurs.

One source of confusion, is that when (for example) you do pip install pycparser, you first get the error:

Failed building wheel for pycparser

which is then followed by the message that the package was:

Successfully installed pycparser-2.19.

    # pip3 install pycparser

    Collecting pycparser
      Using cached https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz
    Building wheels for collected packages: pycparser
      Running setup.py bdist_wheel for pycparser ... error
      Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-g_v28hpp/pycparser/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-__w_f6p0 --python-tag cp36:
      Traceback (most recent call last):
        File "<string>", line 1, in <module>
        ...
        File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2349, in resolve
          module = __import__(self.module_name, fromlist=['__name__'], level=0)
      ModuleNotFoundError: No module named 'wheel.bdist_wheel'

      ----------------------------------------
      Failed building wheel for pycparser
      Running setup.py clean for pycparser
    Failed to build pycparser
    Installing collected packages: pycparser
      Running setup.py install for pycparser ... done
    Successfully installed pycparser-2.19

What is going on here?

(I would like to understand how something can fail but still get installed and whether you can trust this package functioning correctly?)

So far the best partial explanation I have found is this.

BTW / Solution :

The solution to the above problem is most often to make sure to disable the cached copy by using: pip install<package> \--no-cache-dir.

Since, nobody seem to mention this apart myself. My own solution to the above problem is most often to make sure to disable the cached copy by using: pip install<package> \--no-cache-dir.

From: stackoverflow.com/q/53204916