Catch DistributionNotFound when pycrypto is absent (#15731)

* Catch DistributionNotFound when pycrypto is absent

On Solaris 11, module `pkg_resources` throws `DistributionNotFound` on import if `cryptography` is installed but `pycrypto` is not.  This change causes that situation to be handled gracefully.

I'm not using Paramiko or Vault, so I my understanding is that I don't
need `pycrpto`.  I could install `pycrypto` to make the error go away, but:
- The latest released version of `pycrypto` doesn't build cleanly on Solaris (https://github.com/dlitz/pycrypto/issues/184).
- Solaris includes an old version of GMP that triggers warnings every time Ansible runs (https://github.com/ansible/ansible/issues/6941).  I notice that I can silence these warnings with `system_warnings` in `ansible.cfg`, but not installing `pycrypto` seems like a safer solution.

* Ignore only `pkg_resources.DistributionNotFound`, not other exceptions.
This commit is contained in:
Peter Oliver 2016-05-19 19:39:34 +01:00 committed by Toshio Kuratomi
parent d3367dd722
commit faf85ec57c

View file

@ -70,6 +70,11 @@ try:
HAS_PBKDF2HMAC = True HAS_PBKDF2HMAC = True
except ImportError: except ImportError:
pass pass
except Exception as e:
if e.__module__ == 'pkg_resources' and e.__class__.__name__ == 'DistributionNotFound':
pass
else:
raise
from ansible.compat.six import PY3 from ansible.compat.six import PY3
from ansible.utils.unicode import to_unicode, to_bytes from ansible.utils.unicode import to_unicode, to_bytes