### Summary

Ansible devel sanity tests failing with error: packaging Python module unavailable; unable to validate the collection

### Issue Type

Bug Report

### Component Name

ansible sanity tests

### Ansible Version

```console
$ ansible devel
```


### Configuration

```console
$ ansible-config dump --only-changed
```


### OS / Environment

mac os

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)

```
Ansible devel sanity tests is failing with `stderr: [WARNING]: packaging Python module unavailable; unable to validate collection`. Plz ref the below test failures:
[ansible-test-sanity-docker-devel](https://dashboard.zuul.ansible.com/t/ansible/build/ffc5d7c618a740bf9c783e15c2d14806)
[network-ee-sanity-tests](https://dashboard.zuul.ansible.com/t/ansible/build/b4ab02b51d76487b97356f3c6ffe76fe)

### Expected Results

Ansible sanity tests run without failure for `devel`

### Actual Results

```console
Ansible sanity tests fail for `devel`
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
if not issubclass(obj, plugin_class):
                return get_with_context_result(None, plugin_load_context)
        
        self._display_plugin_load(self.class_name, name, self._searched_paths, path, found_in_cache=found_in_cache, class_only=class_only)
        if not class_only:
            try:
                
                
                instance = object.__new__(obj)
                self._update_object(instance, name, path, redirected_names)
                obj.__init__(instance, *args, **kwargs)
                obj = instance
            except TypeError as e:
                if "abstract" in e.args[0]:
                    
                    
                    return get_with_context_result(None, plugin_load_context)
                raise
        self._update_object(obj, name, path, redirected_names)
        return get_with_context_result(obj, plugin_load_context)
    def _display_plugin_load(self, class_name, name, searched_paths, path, found_in_cache=None, class_only=None):
        ''' formats data to display debug info for plugin loading, also avoids processing unless really needed '''
        if C.DEFAULT_DEBUG:
            msg = 'Loading %s \'%s\' from %s' % (class_name, os.path.basename(name), path)
            if len(searched_paths) > 1:
                msg = '%s (searched paths: %s)' % (msg, self.format_paths(searched_paths))
            if found_in_cache or class_only:
                msg = '%s (found_in_cache=%s, class_only=%s)' % (msg, found_in_cache, class_only)
            display.debug(msg)
    def all(self, *args, **kwargs):