PostgreSQL не может создать расширение plpythonu

Я пытаюсь написать функцию в PostgreSQL для Windows со скриптом Python в теле, и я сталкиваюсь с сообщением об ошибке при попытке создать расширение plpythonu. Команда, которую я запускаю:

CREATE EXTENSION plpythonu;

Который выдает следующее сообщение об ошибке:

ERROR: could not access file "$libdir/plpython2": No such file or directory
SQL state: 58P01

Я также попытался запустить:

CREATE EXTENSION plpython3u;

что приводит к этой ошибке:

ERROR: could not load library "C:/Program Files (x86)/PostgreSQL/9.2/lib/plpython3.dll": The specified module could not be found.
SQL state: 58P01

Файл plpython3.dll существует в этом месте, но, по-видимому, отсутствует некоторая критическая зависимость. Я искал везде и не нашел ничего полезного в этом. У меня установлены Python 2 и 3 на машине...

1 ответ

Решение

Новейшие (9.4 или более поздние) бинарные установки из EnterpriseDB содержат только plpython3u.dll. В версиях с 9.4 по 9.6 мне пришлось установить python 3.3, чтобы запустить plpython3u.

Вы можете проверить, какая версия Python необходима для plpython3u.dll, с помощью Dependency Walker.

Полный ответ можно найти: https://postgresrocks.enterprisedb.com/t5/PostgreSQL/unable-to-install-pl-python-extension/m-p/4090 Предполагается, что вы использовали stackbuilder для установки языкового пакета edb. Проверьте правильность команд в вашей установке. Например, путь к данным postgresql, путь установки edb и версии python. Когда вы используете depency walker (depends.exe), обращайте внимание только на pythonxx.dll. В более старых версиях PG это может или не может соответствовать версии, установленной пакетом языков EDB. Для версии 10.7 требуется версия 3.4 Python. Для Windows более поздние версии Python 3.4 не имеют установщика msi. Возможно, вам придется установить 3.4.4 или сначала попробовать обновить PG 10 до последней версии (10.11). Для этой версии требуется python 3.7, поэтому вы можете использовать загрузку EDB. Но версия для Python может уже существовать и быть найдена. не удалось загрузить библиотеку plpython3.dll(здесь, в stackru) был несколько близок, но не детализировал необходимые переменные среды. Предлагаемое решение не требует постоянного изменения переменных окружения, что очень помогает при использовании нескольких установок Python.

Другие вопросы по тегам