Como resolver o erro Python environment preparation failed

Como resolver o erro Python environment preparation failed

Um erro muito comum ao executar automações pelo Runner é o Python Environment preparation failed. . Como o próprio nome diz, o Runner falha ao tentar preparar o ambiente python para execução da robô. Este erro é lançado em situações diversas, e impede que o Runner execute o Robô. Abaixo algumas abordagens de como lidar com esse erro:

Situação 1:

Bloqueio de ambiente, Runner não consegue estabelecer conexão com o PyPl (Python Package Index).

Em alguns casos de bloqueio de ambiente, ao rodar uma automação pelo Runner o erro abaixo pode ser lançado:

Warning
exec: C:\\Botcity\\.\\venvs\\SAP/Scripts/python -m pip install --upgrade pip Requirement already satisfied: pip in c:\\botcity\\venvs\\sap\\lib\\site-packages (23.2.1) WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pip/ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pip/ WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pip/ WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pip/ WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pip/ ..... Python environment preparation failed. Error executing task: Python environment preparation failed....

Resposta/solução padrão:

Pelo erro lançado, aparentemente o ambiente onde está utilizando o Runner não está conseguindo estabelecer conexão com PyPI (Python Package Index). Com isso, o Runner não vai conseguir executar o comando do "pip install" para instalar os pacotes. isso é comum em ambientes corporativos que possuem bloqueio, provavelmente existe algum bloqueio na comunicação com o PyPi.

Poderia verificar com o time de infra se há esse bloqueio? Aqui temos uma documentação com as liberações necessárias para esses casos: https://documentation.botcity.dev/getting-started/prerequisites/#problems-with-blocking-environments

Situação 2:

Error: Cannot invoke "java.lang.Process.waitFor()" because "this.process" is null ao tentar criar ambiente virtual

Warning
Log Screen Process created Log Application Process created WAITING NEW TASKS... Executing task: Bot_LoginSAP... exec: python -m venv ./venvs/Bot_LoginSAP_I execAndWait - Error: Cannot invoke "java.lang.Process.waitFor()" because "this.process" is null

Resposta/solução padrão:

Como o erro foi lançado após a tentativa de criar o ambiente virtual, provavelmente é algum problema relacionado ao Python, como:

  • Python não está instalado corretamente.
  • Ou não está no path do sistema.
  • Ou pacote do virtualenv não está instalado.

Para verificar a instalação do Python, você pode rodar os comandos:

  • python --version
  • where python

Se obter o retorno do Python através dos comandos acima, é só garantir que os pacotes abaixo estejam instalados:

  • pip
  • virtualenv

A forma mais fácil de garantir isso é executando esse comando aqui:

  1. python -m pip install --upgrade pip setuptools virtualenv

Situação 3:

Python não encontrado no ambiente de execução

Em alguns casos o Python não é encontrado ao rodar a automação pelo Runner.

Resposta/solução padrão:

Para confirmar se o Python esta instalado no ambiente, você pode usar os comandos:

  • python --version
  • where python

Em alguns casos, o ambiente possui duas versões de Python instaladas, e é muito comum que sejam chamadas por comandos diferentes, nestes caso você pode rodar para verificar qual comando esta chamando a versão de Python que deseja:

  • py
  • python

Caso a versão que deseja esteja sendo chamada através do comando py , para que o Runner utilize esse comando para a preparação do ambiente, será necessário incluir a linha pythonBinary=py no arquivo de configuração do Runner. Esse arquivo é o conf.bcf e esta localizado dentro da pasta conf do SDK da BotCity.

Outra opção é passar o caminho completo do Python que deseja utilizar para a flag pythonBinary , assim:

  1. pythonBinary=<caminho para o python.exe>

Quote
Passe o caminho com barras duplas, para que durante a execução a barra simples não seja identificada como escape.