- Visão geral
- Criptografia
- Banco de Dados
- Java
- Python
- WebAPI
Problemas e Limitações Conhecidas
Soluções para problemas conhecidos ao executar scripts do Python com o pacote de atividades Python, incluindo thread, caminho do arquivo e problemas de conversão de tipo.
Vale a pena conhecer os comportamentos a seguir quando você executa scripts do Python com o pacote de atividades Python. Cada uma inclui uma solução alternativa.
Scripts executados em uma thread em segundo plano
Problema: um script falha com o seguinte erro, normalmente ao importar uma biblioteca que instala manipuladores de sinal, como xlwings ou outra ponte do Excel ou GUI:
ValueError: set_wakeup_fd only works in main thread of the main interpreter
Causa: o código dentro de um escopo do Python é executado em uma thread de trabalho, não na thread principal do processo, portanto, o código do Python que requer a thread principal falha.
Ação: use uma das seguintes abordagens:
- Prefira bibliotecas que não exigem o thread principal, por exemplo,
openpyxloupandasem vez dexlwingspara ler e escrever arquivos do Excel. - Execute o código principal sensível à thread em um processo Python separado, iniciado com
subprocesse apontado para um executável do Python real, como o retornado porshutil.which("python3").
Dentro da atividade, sys.executable aponta para o processo do host em vez de para seu interpretador do Python, portanto, não é um destino válido para subprocess.
Caminhos de arquivo relativos resolvidos em relação a uma pasta inesperada
Problema: um caminho relativo, como open("data.csv") lê ou grava em um local que você não pretendia, e o arquivo parece estar ausente.
Causa: quando a propriedade PastaDeTrabalho não está definida, o diretório de trabalho do script em execução é a própria pasta de runtime da atividade, não a sua pasta do projeto.
Ação: use uma das seguintes abordagens:
- Defina a propriedade PastaDeTrabalho da atividade Python Scope como a pasta na qual seu script deve ser executado.
os.chdir(...)no início do seu script.- Use caminhos absolutos para acesso ao arquivo.
Obter objeto Python não pode converter todos os tipos Python
Problema: a atividade Get Python Object falha com o seguinte erro:
Get Python Object: Error converting Python object
Causa: a atividade converte um valor de retorno do Python em um tipo.NET. Objetos Python complexos ou nativos, por exemplo, um dict, um list, ou um unificado DataFrame de Pandas, nem sempre podem ser convertidos.
Ação: retorne uma string da sua função do Python e converta-a em seu fluxo de trabalho:
- Em Python, serialize o valor para JSON com
json.dumps(...), ou comdf.to_json(orient="records")para um PandasDataFrame. - Recupere o valor com Get Python Object como
String. - Deserialize-o em seu fluxo de trabalho.