def _match_by_requirements(self, current_venvs, requirements, interpreter, options):
        """Select a venv matching interpreter and options, complying with requirements.

        Several venvs can be found in this case, will return the better fit.
        """
        matching_venvs = []
        for venv_str in current_venvs:
            venv = json.loads(venv_str)

            # simple filter, need to have exactly same options and interpreter
            if venv.get('options') != options or venv.get('interpreter') != interpreter:
                continue

            # requirements complying: result can be None (no comply) or a score to later sort
            matching = self._venv_match(venv['installed'], requirements)
            if matching is not None:
                matching_venvs.append((matching, venv))

        if not matching_venvs:
            return

        return self._select_better_fit(matching_venvs)
Select a venv matching interpreter and options, complying with requirements.

        Several venvs can be found in this case, will return the better fit.