Erros de Python

PYTHONPATH

O Blender irá falhar durante a inicialização (carregamento) caso o caminho descrito na variável PYTHONPATH esteja definido de maneira incorreta.

Contudo, mesmo isto pode ser útil para os desenvolvedores Python que queiram usar suas próprias instalações Python, pode ocorrer que essas instalações evitem que o Blender abra como um todo caso sejam definidas versões incompatíveis da linguagem Python.

Para verificar se esta é a causa de um erro temporário, remova a definição desta variável de ambiente e recarregue o Blender.

Veja a documentação do Python’s para mais detalhes.

Precompiled Libraries

While not common practice, Python add-ons can be distributed with their own precompiled libraries. Unlike regular Python scripts, these are not portable between different platforms.

É possível que a biblioteca seja incompatível com a sua instalação do Blender (na tentativa de carregar uma biblioteca construída para uma versão diferente do Python, ou ao carregar uma biblioteca de 32 bits em um sistema de 64 bits).

Caso o complemento tenha arquivos com as extensões .pyd ou .so, certifique-se que a distribuição presente neles é compatível com seu sistema operacional.

Referências específicas de plataforma

MS-Windows

Bibliotecas Python misturadas (DLL’s)

Caso a linguagem de programação Python esteja apresentando erros ou caso você tenha um complemento que falha ao ser habilitado e apresente um erro, por exemplo: ... is not a valid Win32 application., pode ser que hajam bibliotecas misturadas.

../_images/troubleshooting_python_traceback.png

Um rastreamento de erros (tracebacks) Python.

Isto pode ser causado por inconsistências nas bibliotecas Python. Mesmo que o Blender seja distribuído com seu próprio interpretador Python embutido, bibliotecas incompatíveis ou duplicadas podem causar problemas.

Para localizar qual biblioteca Python causou o problema, verifique a mensagem de erro.

Isto é normalmente apresentado em algum local próximo a linha de base do rastreamento (traceback). Através do erro apresentado acima, é possível ver que o problema foi causado ao tentar importar a função _socket. Isto pode corresponder tanto ao arquivo nomeado _socket.py quanto ao arquivo _socket.pyd.

Para auxiliar com a resolução deste problema, o seguinte script pode ser colado em seu editor de textos e executado para verificar por bibliotecas duplicadas em seus caminhos de pesquisa. ( a saída será mostrada dentro da Janela de linha de comando).

import os
import sys

# Change this based on the library you wish to test
test_lib = "_socket.pyd"

def GetSystemDirectory():
    from ctypes import windll, create_string_buffer, sizeof
    GetSystemDirectory = windll.kernel32.GetSystemDirectoryA
    buffer = create_string_buffer(260)
    GetSystemDirectory(buffer, sizeof(buffer))
    return os.fsdecode(buffer.value)

def library_search_paths():
    return (
        # Windows search paths
        os.path.dirname(sys.argv[0]),
        os.getcwd(),
        GetSystemDirectory(),
        os.environ["WINDIR"],  # GetWindowsDirectory
        *os.environ["PATH"].split(";"),

        # regular Python search paths
        *sys.path,
        )

def check_library_duplicate(libname):
    paths = [p for p in library_search_paths()
             if os.path.exists(os.path.join(p, libname))]

    print("Library %r found in %d locations:" % (libname, len(paths)))
    for p in paths:
        print("- %r" % p)

check_library_duplicate(test_lib)