code: def _init_solc_binary(version):
          
  
          if not version:
              return os.environ.get("SOLC") or "solc"
  
          # tried converting input to semver, seemed not necessary so just slicing for now
          main_version = solc.main.get_solc_version_string()
          main_version_number = re.match(r"\d+.\d+.\d+", main_version)
          if main_version is None:
              raise CriticalError(
                  "Could not extract solc version from string {}".format(main_version)
              )
          if version == main_version_number:
              log.info("Given version matches installed version")
              solc_binary = os.environ.get("SOLC") or "solc"
          else:
              solc_binary = util.solc_exists(version)
              if solc_binary:
                  log.info("Given version is already installed")
              else:
                  try:
                      solc.install_solc("v" + version)
                      solc_binary = util.solc_exists(version)
                      if not solc_binary:
                          raise SolcError()
                  except SolcError:
                      raise CriticalError(
                          "There was an error when trying to install the specified solc version"
                      )
  
              log.info("Setting the compiler to %s", solc_binary)
  
          return solc_binary
docs: Figure out solc binary and version.
  
          Only proper versions are supported. No nightlies, commits etc (such as available in remix).