Como resolver o erro Python environment preparation failed ao executar uma automação pelo Runner?

Como resolver o erro Python environment preparation failed ao executar uma automação pelo Runner?

Antes de executar uma tarefa, o Runner prepara o ambiente Python do robô. Quando essa etapa falha, a tarefa não chega a ser executada e o log registra Python environment preparation failed. Três causas respondem pela maioria dos casos, e o próprio log do Runner indica qual é a sua. Veja abaixo como identificar e resolver cada uma.

1. O que fazer quando o Runner não alcança o PyPI?

No log aparecem tentativas de conexão com o pypi.org que terminam em timeout:

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/
...
Python environment preparation failed.
Error executing task: Python environment preparation failed...

Sem acesso ao PyPI (o repositório oficial de pacotes Python), o pip install não consegue baixar os pacotes do robô. Isso é comum em ambientes corporativos com bloqueio de saída.

Peça ao time de infraestrutura as liberações de firewall listadas na seção Utilizando Python no desenvolvimento.

2. O que fazer quando o Python não está instalado corretamente?

O log traz a mensagem abaixo logo após a tentativa de criar o ambiente virtual:

execAndWait - Error: Cannot invoke "java.lang.Process.waitFor()" because "this.process" is null

Nesse caso, o Python não está instalado, não está no PATH do sistema ou está sem os pacotes que o Runner usa para montar o ambiente virtual. Confirme a instalação:

python --version
where python

Se os comandos responderem, instale os pacotes necessários:

python -m pip install --upgrade pip setuptools virtualenv

3. O que fazer quando o Runner chama o comando errado do Python?

Quando a máquina tem mais de uma versão instalada, cada uma costuma responder por um comando diferente. Teste py e python no terminal para descobrir qual deles chama a versão que o robô precisa.

Por exemplo, se python --version retorna 3.8, mas py --version retorna 3.12, que é a versão exigida pelo robô, o Runner precisa usar o py.

Nesse caso, informe isso ao Runner no arquivo conf.bcf, dentro da pasta conf onde o SDK da BotCity foi instalado:

pythonBinary=py

Você também pode apontar o caminho completo do executável no mesmo parâmetro, por exemplo pythonBinary=C:\\Python312\\python.exe.

Use barras duplas no caminho do Python

Ao informar o caminho completo em pythonBinary, escreva-o com barras duplas, para que a barra simples não seja interpretada como caractere de escape durante a execução.

Veja todos os parâmetros aceitos pelo conf.bcf na seção Personalizar a configuração do Runner.

Ainda precisa de ajuda?

Se isso não resolver o seu caso ou sua pergunta não está listada aqui, abra um chamado com o time de suporte.