9 / 8 / 1 Регистрация: 23.11.2019 Сообщений: 141 |
|
1 |
|
27.10.2022, 21:52. Показов 480. Ответов 5
Добрый день! Хочу в конечном итоге на винду поставить! Попытка 1 Попытка 2 уже смотрел в инет Кликните здесь для просмотра всего текста
1. Для определённой версии PG нужна определённая версия Питона. Для PG14, кажется, нужен Python 3.9 — более новый или старый не заработают Как результат всё таже ошибка Миниатюры
__________________
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 или какая-то другая — не важно, главное определить). После этого пойти и установить Питон той версии, которую вы определите по зависимостям. После этого убедиться, что путь до pythonX.dll прописан в системных путях (PATH) в Windows, чтобы работал поиск. Это вы уже на картинках с 3.9 показали. Ну и после этого уже CREATE EXTENSION
1 |
9 / 8 / 1 Регистрация: 23.11.2019 Сообщений: 141 |
|
28.10.2022, 15:06 [ТС] |
4 |
Если я верно понял, то чень интересно Миниатюры
0 |
9 / 8 / 1 Регистрация: 23.11.2019 Сообщений: 141 |
|
28.10.2022, 17:09 [ТС] |
5 |
А вопрос такой Добавлено через 1 минуту Добавлено через 9 минут
Взять из диры с питоном файл python3.dll закинуть в постгрес либ и переименовать в python310.dll Попробовал и так и так Добавлено через 4 минуты Добавлено через 1 час 38 минут Добавлено через 5 минут
После этого убедиться, что путь до pythonX.dll прописан в системных путях (PATH) в Windows, чтобы работал поиск. Это вы уже на картинках с 3.9 показали. Путь до папки, где лежит длл или путь к самой длл может надо сделать?
0 |
9 / 8 / 1 Регистрация: 23.11.2019 Сообщений: 141 |
|
29.10.2022, 09:31 [ТС] |
6 |
Ура заработало В общем видать нужна перезагрузка компа, где об этом никто не говорит — все имейте ввиду.
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 :
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 теперь работали.
1
Steve Elster
22 Окт 2020 в 22:23
Нет необходимости собирать из исходного кода, что потребует установки компилятора C, что нетривиально в Windows.
Вы никогда не говорили нам, присутствует ли python3.dll
в каталоге или нет, поэтому я предполагаю, что он там был. Тогда ошибка будет означать, что общая библиотека, с которой ссылается python3.dll
, отсутствует, скорее всего, из Python 3. Установка Python 3, вероятно, решит проблему.
0
Laurenz Albe
9 Июн 2020 в 08:58