Sql error 58p01 ошибка загрузить библиотеку c program files postgresql 13 lib plpython3 dll

PLPython3u PostgreSQL Решение и ответ на вопрос 3036323

9 / 8 / 1

Регистрация: 23.11.2019

Сообщений: 141

1

27.10.2022, 21:52. Показов 480. Ответов 5


Добрый день!
уже много часов мучаюсь и всё никак.
Хочу использовать PLPython3u
Пробовал как на винде 10 так и дебиан 11(тут я даже не смог собрать из исходников постгрес со всеми расширениями, или смог — хз, если смог, то всё равно не получилось создать расширение)

Хочу в конечном итоге на винду поставить!
Постгрес 15.

Попытка 1
Пробовал просто CREATE EXTENSION/LANGUAGE plpython3u
Ошибка: загрузить библиотеку «PosgreSQL/15/lib/plpython3.dll» не удалось
Она там вроде лежит

Попытка 2 уже смотрел в инет
текст из инета (ещё также находил инфу, что надо закинуть файл python3.dll в PosgreSQL/15/lib/ и переименовать в python39.dll)

Кликните здесь для просмотра всего текста

1. Для определённой версии PG нужна определённая версия Питона. Для PG14, кажется, нужен Python 3.9 — более новый или старый не заработают
2. python39.dll надо скопировать в …/Windows/System32 (здесь кстати тоже находил инфу с переименовыванием python3.dll в python39.dll)
3. В поиске Винды найти «переменные среды», там добавить в глобальный PATH папки Python 3.9 Если при этом хочется иметь в Винде более новую версию Питона, то её надо прописывать в путь для конкретного юзера. А для PG нужен именно глобальный PATH

Как результат всё таже ошибка
пути вроде есть
вот картинка

Миниатюры

PLPython3u
 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



9 / 8 / 1

Регистрация: 23.11.2019

Сообщений: 141

27.10.2022, 21:58

 [ТС]

2

работаю через пгАдмин4



0



1187 / 917 / 367

Регистрация: 02.09.2012

Сообщений: 2,793

28.10.2022, 00:33

3

Нужно взять PosgreSQL/15/lib/plpython3.dll и посмотреть от каких других DLL-ек она зависит и найти среди этого списка собственно сам python (будет это python39.dll или какая-то другая — не важно, главное определить).
Это можно сделать хотя бы с помощью Dependencу Walker — утилитка древняя, но простая (слегка тормознутая, когда собирает ВСЕ дерево зависимостей — надо ожидать, пока она работает)

После этого пойти и установить Питон той версии, которую вы определите по зависимостям.

После этого убедиться, что путь до pythonX.dll прописан в системных путях (PATH) в Windows, чтобы работал поиск. Это вы уже на картинках с 3.9 показали.

Ну и после этого уже CREATE EXTENSION



1



9 / 8 / 1

Регистрация: 23.11.2019

Сообщений: 141

28.10.2022, 15:06

 [ТС]

4

Если я верно понял, то чень интересно
Мне нужен Python 3.10
Но в доке написано 3,9, что за шаманство???

Миниатюры

PLPython3u
 



0



9 / 8 / 1

Регистрация: 23.11.2019

Сообщений: 141

28.10.2022, 17:09

 [ТС]

5

А вопрос такой
Как правильно будет
Взять из диры с питоном файл python3.dll закинуть в постгрес либ и переименовать в python310.dll
Или взять python310.dll и закинуть

Добавлено через 1 минуту
пайтон 310 у меня установился через Stack Builder
(я сразу его запустил после установки постреса и через него установил поддерживаемые языки)
Ща попробую к тому питону указать пути и сделать всё по инструкции
P.S. Это конечно прикол — в доке писать одно, а на деле другое

Добавлено через 9 минут

Цитата
Сообщение от DGDarkKing
Посмотреть сообщение

Взять из диры с питоном файл python3.dll закинуть в постгрес либ и переименовать в python310.dll
Или взять python310.dll и закинуть

Попробовал и так и так
не заработало, всё таже ошибка

Добавлено через 4 минуты
Попробовал из папки edb, в которую установил StackBuilder перекинуть питон в мою папку C:/Python/ и переименовал из Python-3.10 в Python310, и конечно занёс её и папку Scripts в пути, но всё равно не работает

Добавлено через 1 час 38 минут
Ща пробую просто питон скачать с офф сайта
тут может имеет значение система 32, 64?

Добавлено через 5 минут
Всё таже ошибка
ERROR: ОШИБКА: загрузить библиотеку «C:/Program Files/PostgreSQL/15/lib/plpython3.dll» не удалось: The specified module could not be found.

Цитата
Сообщение от grgdvo
Посмотреть сообщение

После этого убедиться, что путь до pythonX.dll прописан в системных путях (PATH) в Windows, чтобы работал поиск. Это вы уже на картинках с 3.9 показали.

Путь до папки, где лежит длл или путь к самой длл может надо сделать?



0



9 / 8 / 1

Регистрация: 23.11.2019

Сообщений: 141

29.10.2022, 09:31

 [ТС]

6

Ура заработало
Просто включил комп и расширение спокойно создалось
CREATE EXTENSION plpython3u

В общем видать нужна перезагрузка компа, где об этом никто не говорит — все имейте ввиду.
Мне кажется, что наверное и не надо было питон устанавливать с офф сайт, мб и прошлые действия бы сработали на ура, если бы я перезагрузил комп, но тут надо пробовать или делать по последнему удачному шагу.
P.S. Специально отчитывался тут за каждое действие, чтобы был более полный экскурс по установке



0



To get the obvious out of the way, my question is posted after reading many other questions like this one
https://stackoverflow.com/questions/60683776/install-pl-python-on-windows-for-postgresql-12 But I ve been stuck for about a month and half now when trying to use pl/python.I’m using Postgresql 12 with the enterprisedb package including pgadmin4 as a gui and the language pack . So PL python is supposed to be included.When i ran «CREATE EXTENSION plpython3u;»

I got the following message ERROR: ライブラリ»C:/Program Files/PostgreSQL/12/lib/plpython3.dll»をロードできませんでした: The specified module could not be found. SQL state: 58P01which is the classic «ERROR: could not load library «C:/Program Files/PostgreSQL/12/lib/plpython3.dll»: The specified module could not be found.»

My understanding, based on reading multiples posts and articles, is that 2 elements are required

1. the proper python interpreter

Python runtime needs to match the PostgresSQL version The documentation within the PostgreSQL folder indicates The procedural languages pl/Perl, pl/Python and pl/Tcl are included in this distribution of PostgreSQL. The server has been built using the LanguagePack community distributions of those language interpreters. To use any of the these languages from within PostgreSQL, download and install the appropriate interpreters and ensure they are included in the PATH variable under which the database server will be started. The versions used are shown below — newer minor (bugfix) releases may also work, but have not been tested:

* Python 3.7

Also when running plpython3.DLL found in C:program filespostgresql12lib through the software «dependency walker» I get the following result :

r/PostgreSQL - Unable to install pl/python PostgreSQL

Which would mean that -it’s indeed python 3.7 which is required as mentioned in the doc. -the dependency was found.

2. setting the environment variables PATH and PYTHONHOME

Now both the documentation https://www.enterprisedb.com/edb-docs/d/edb-postgres-advanced-server/user-guides/language-pack-guide/12/EDB_Postgres_Language_Pack_Guide.1.09.html# and a forum help administrator https://postgresrocks.enterprisedb.com/t5/PostgreSQL/unable-to-install-pl-python-extension/td-p/4059/

mentions the needs to change environment variables PATH and PYTHONHOME. something along the lines of

set PYTHON_HOME=c: edblanguagepackv1Python-3.7

and set PATH=C:edblanguagepackv1Python-3.7;C:edblanguagepackv1Perl-5.26bin; C:edblanguagepackv1Tcl-8.6bin;%PATH%

the forum mentions you need to change those with the command prompt. the doc isn’t specific as to how you re supposed to do that but i figured it meant the python interpreter itself

either way it doesnt work. when I use the command prompt there is no answer: no error, no nothing. It just starts new on another line. in python interpreter, the syntax is invalid. and when I use the query in pgadmin I have the same error. I saw other possible methods like a batch file or windows settings but it seems completely different.

I really want to move forward after being stuck so long and would much appreciate some insight.

Я пытаюсь использовать язык python в postgresql. Что-то вроде этого:

create or replace function test(_a integer) returns integer as $$

if _a%2==0:
    return 'even'
elif _a%3==0:
    return 'mult of 3'

else:
    return _a

$$ language plpython3u

Но когда я запускаю это, я получаю такую ​​ошибку:

ERROR:  language "plpython3u" does not exist
HINT:  Use CREATE EXTENSION to load the language into the database.
SQL state: 42704

Затем я попытался создать расширение языка python, выполнив:

create extension plpython3u

Что говорит мне о следующей ошибке:

ERROR:  could not load library "C:/Program Files/PostgreSQL/12/lib/plpython3.dll": The specified module could not be found.

SQL state: 58P01

Я проверил, есть ли файл plpython3.dll. Затем я прочитал кое-что об изменении файла postgresql configure путем компиляции postgres из исходного кода и добавления --with python (я нашел некоторые из этих здесь).

Моя проблема в том, что я не знаю, как это сделать на самом деле. Моя ОС — Windows Server 2019 64 бит, версия Python — 3.7.4, а версия postgresql — 12.2-1 (pgadmin 4.18).

Как я могу это решить?

2 ответа

Заставить python работать с postgres, похоже, зависит от версии или версий. Сейчас у меня postgres 9.6. и я установил python 3.9. Ранее я установил расширение plpython3u в postgres, но прошло время, и я перешел на другой компьютер. Когда я попытался запустить процедуру на основе Python, я получил ошибку. Я скачал обходчик зависимостей отсюда: https://www.opcsupport.com/s/article/How-do-I-figure-out-why-my-DLL-is-failing-Microsoft-Dependency-Walker< /a> или здесь: https://www.dependencywalker.com/. Когда я открыл обходчик зависимостей, я перетащил plpython3.dll в обходчик зависимостей, .dll находится здесь: F:pg96lib. Затем я получил следующий экран — ниже — который, казалось, указывал на то, что мне нужно установить Python 3.7. Я скачал Python 3.7 отсюда: https://www.python.org/downloads/windows/. И мои процедуры Python теперь работали.

screenshot from dependency walker


1

Steve Elster
22 Окт 2020 в 22:23

Нет необходимости собирать из исходного кода, что потребует установки компилятора C, что нетривиально в Windows.

Вы никогда не говорили нам, присутствует ли python3.dll в каталоге или нет, поэтому я предполагаю, что он там был. Тогда ошибка будет означать, что общая библиотека, с которой ссылается python3.dll, отсутствует, скорее всего, из Python 3. Установка Python 3, вероятно, решит проблему.


0

Laurenz Albe
9 Июн 2020 в 08:58

Понравилась статья? Поделить с друзьями:
  • Sql error 58p01 error could not open file
  • Spn 3225 fmi 10 ошибка двигателя лиаз
  • Spn 1761 fmi 18 камаз ошибка
  • Spn 792 fm1 5 код ошибки
  • Spn 171 fmi 3 камаз ошибка