code: func Find(c context.Context, vers Version, lookPath LookPathFunc) (*Interpreter, error) {
  	// pythonM.m, pythonM, python
  	searches := make([]string, 0, 3)
  	pv := vers
  	pv.Patch = 0
  	if pv.Minor > 0 {
  		searches = append(searches, pv.PythonBase())
  		pv.Minor = 0
  	}
  	if pv.Major > 0 {
  		searches = append(searches, pv.PythonBase())
  		pv.Major = 0
  	}
  	searches = append(searches, pv.PythonBase())
  
  	lookErrs := errors.NewLazyMultiError(len(searches))
  	for i, s := range searches {
  		interp, err := findInterpreter(c, s, vers, lookPath)
  		if err == nil {
  			// Resolve to absolute path.
  			if err := filesystem.AbsPath(&interp.Python); err != nil {
  				return nil, errors.Annotate(err, "could not get absolute path for: %q", interp.Python).Err()
  			}
  
  			return interp, nil
  		}
  
  		logging.WithError(err).Debugf(c, "Could not find Python for: %q.", s)
  		lookErrs.Assign(i, err)
  	}
  
  	// No Python interpreter could be identified.
  	return nil, errors.Annotate(lookErrs.Get(), "no Python found").Err()
  }
docs: // Find attempts to find a Python interpreter matching the supplied version
  // using PATH.
  //
  // In order to accommodate multiple configurations on operating systems, Find
  // will attempt to identify versions that appear on the path