### 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
''' Return a list of paths to search for plugins in '''
        paths_with_context = self._get_paths_with_context(subdirs=subdirs)
        return [path_with_context.path for path_with_context in paths_with_context]
    def _load_config_defs(self, name, module, path):
        ''' Reads plugin docs to find configuration setting definitions, to push to config manager for later use '''
        
        if self.class_name:
            type_name = get_plugin_class(self.class_name)
            
            if type_name in C.CONFIGURABLE_PLUGINS:
                dstring = AnsibleLoader(getattr(module, 'DOCUMENTATION', ''), file_name=path).get_single_data()
                if dstring:
                    add_fragments(dstring, path, fragment_loader=fragment_loader, is_module=(type_name == 'module'))
                if dstring and 'options' in dstring and isinstance(dstring['options'], dict):
                    C.config.initialize_plugin_configuration_definitions(type_name, name, dstring['options'])
                    display.debug('Loaded config def from plugin (%s/%s)' % (type_name, name))
    def add_directory(self, directory, with_subdir=False):
        ''' Adds an additional directory to the search path '''
        directory = os.path.realpath(directory)
        if directory is not None:
            if with_subdir:
                directory = os.path.join(directory, self.subdir)
            if directory not in self._extra_dirs:
                
                self._extra_dirs.append(directory)
                self._clear_caches()
                display.debug('Added %s to loader search path' % (directory))
    def _query_collection_routing_meta(self, acr, plugin_type, extension=None):