### 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
except AttributeError:
                    continue
                if not issubclass(obj, plugin_class):
                    continue
            self._display_plugin_load(self.class_name, basename, self._searched_paths, path, found_in_cache=found_in_cache, class_only=class_only)
            if not class_only:
                try:
                    obj = obj(*args, **kwargs)
                except TypeError as e:
                    display.warning("Skipping plugin (%s) as it seems to be incomplete: %s" % (path, to_text(e)))
            self._update_object(obj, basename, path)
            yield obj
class Jinja2Loader(PluginLoader):
    """
    PluginLoader optimized for Jinja2 plugins
    The filter and test plugins are Jinja2 plugins encapsulated inside of our plugin format.
    The way the calling code is setup, we need to do a few things differently in the all() method
    We can't use the base class version because of file == plugin assumptions and dedupe logic
    """
    def find_plugin(self, name, collection_list=None):
        if '.' in name:  
            return super(Jinja2Loader, self).find_plugin(name, collection_list=collection_list)
        
        raise AnsibleError('No code should call "find_plugin" for Jinja2Loaders (Not implemented)')
    def get(self, name, *args, **kwargs):
        if '.' in name:  
            return super(Jinja2Loader, self).get(name, *args, **kwargs)
        
        raise AnsibleError('No code should call "get" for Jinja2Loaders (Not implemented)')
    def all(self, *args, **kwargs):