- Cenário
Windows 10
PostgreSQL 9.5 (instalado em C:\Program Files\PostgreSQL\9.5)
Python 3.7.4 - Windows x86-64 executable installer (python-3.7.4-amd64.exe - instalado em C:\Python\Python37)
- Problema 1
Ao executar o comando:
create extension plpython3u;
Ocorre o erro:
ERROR: could not load library "C:/Program Files/PostgreSQL/9.5/lib/plpython3.dll": unknown error 126
Solução: copiar a dll C:\Python\Python37\python37.dll para C:\Windows\System32\python33.dll (nome modificado de python37 para python33, tem que fazer isso)
- Problema 2
Ao criar a função de teste:
CREATE OR REPLACE FUNCTION public.fc_py()
RETURNS character varying AS
$$
return 'Hello, World!!'
$$
LANGUAGE plpython3u;
Ocorre o erro no pgAdmin:
Connection to database *** lost.
Do you want to attempt to reconnect to the database?
Conforme o log do PostgreSQL (C:\Program Files\PostgreSQL\9.5\data\pg_log) ocorre o erro:
Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
Solução: criar variáveis de ambiente:
PYTHONHOME=C:\Python\Python37
PYTHONPATH=C:\Python\Python37
Se necessário adicionar C:\Python\Python37 na variável de ambiente Path também.
- Observação
Após os procedimentos parar o serviço do PostgreSQL e iniciar novamente.
- Referências
https://www.postgresql.org/message-id/CAAQFaF%2BtU04KR-%2B8O3ksEcS8GxibUYGJSjRgfDPXE%2B6P5iqGRg%40mail.gmail.com
https://stackoverflow.com/questions/47907232/could-not-load-library-plpython3-dll
https://www.enterprisedb.com/edb-docs/d/edb-postgres-advanced-server/installation-getting-started/installation-guide/9.5/EDB_Postgres_Advanced_Server_Installation_Guide.1.59.html
https://www.enterprisedb.com/edb-docs/d/edb-postgres-advanced-server/installation-getting-started/installation-guide/9.5/EDB_Postgres_Advanced_Server_Installation_Guide.1.49.html#
https://bugs.python.org/issue11288
Melhor blog de desenvolvimento do brasil
ResponderExcluirMas e quando a variável de sistema PYTHONHOME resolve o problema mas bagunça o teu pycharm?
ResponderExcluirBoa tarde,
ResponderExcluirtenho instalado Python39
Ocorre o mesmo erro
create extension plpython3u;
ERROR: could not load library "C:/Program Files/PostgreSQL/13/lib/plpython3.dll": unknown error 126
Executo o mesmo procedimento acima.
Porem o erro continua.
Meu ajudem
Joni
Bom dia,
ExcluirSe vc instalou o PostgreSQL pelo Enterprise DB (EDB), sugiro que vc faça a instalação do Python utilizando o Stack Builder para utilizar a versão "correta" para qual a extensão foi feita conforme o imagem do link abaixo:
https://drive.google.com/file/d/1F5XBc8JIIZZ24qX10JNUP3rGf8Yrf-5f/view?usp=sharing
Este comentário foi removido por um administrador do blog.
ResponderExcluir