@Override
  public @NotNull String createVirtualEnv(@NotNull String destinationDir, boolean useGlobalSite) throws ExecutionException {
    final Sdk sdk = getSdk();
    final LanguageLevel languageLevel = getOrRequestLanguageLevelForSdk(sdk);

    if (languageLevel.isOlderThan(LanguageLevel.PYTHON27)) {
      throw new ExecutionException(PySdkBundle.message("python.sdk.packaging.creating.virtual.environment.for.python.not.supported",
                                                       languageLevel, LanguageLevel.PYTHON27));
    }

    HelpersAwareTargetEnvironmentRequest helpersAwareTargetRequest = getPythonTargetInterpreter();
    TargetEnvironmentRequest targetEnvironmentRequest = helpersAwareTargetRequest.getTargetEnvironmentRequest();

    PythonScriptExecution pythonExecution = PythonScripts.prepareHelperScriptExecution(
      isLegacyPython(languageLevel) ? PythonHelper.LEGACY_VIRTUALENV_ZIPAPP : PythonHelper.VIRTUALENV_ZIPAPP,
      helpersAwareTargetRequest);
    if (useGlobalSite) {
      pythonExecution.addParameter("--system-site-packages");
    }
    pythonExecution.addParameter(destinationDir);
    // TODO [targets] Pass `parentDir = null`
    getPythonProcessResult(pythonExecution, false, true, targetEnvironmentRequest);

    final String binary = PythonSdkUtil.getPythonExecutable(destinationDir);
    final char separator = targetEnvironmentRequest.getTargetPlatform().getPlatform().fileSeparator;
    final String binaryFallback = destinationDir + separator + "bin" + separator + "python";

    return (binary != null) ? binary : binaryFallback;
  }
@Override
  public @NotNull String createVirtualEnv(@NotNull String destinationDir, boolean useGlobalSite)