Как установить сторонний модуль для postgres pl / python? - PullRequest
18 голосов
/ 07 ноября 2011

Мне нужно импортировать сторонний модуль внутри моей функции pl / python.Кажется, pl / python использует внутренний python, который не имеет сторонних модулей.

Я получаю такую ​​ошибку:

ERROR:  PL/Python: PL/Python function "to_tsvector_luc" failed
DETAIL:  <type 'exceptions.ImportError'>: No module named lucene

********** Error **********

ERROR: PL/Python: PL/Python function "to_tsvector_luc" failed
SQL state: XX000
Detail: <type 'exceptions.ImportError'>: No module named lucene

Как установить модуль в pl / python, чтобы я мог импортировать его из моего кода хранимой процедуры?

Ответы [ 2 ]

20 голосов
/ 07 ноября 2011

pl / python имеет доступ ко всем модулям, которые будут у обычного интерпретатора Python, если они находятся в $PYTHONPATH на сервере (и у пользователя, который запускает службу postgres).Работает ли import lucene, если вы запускаете его в интерпретаторе Python на сервере?

Если ваш модуль установлен где-то еще (например, не в dist-пакетах и ​​т. Д.), То вам нужно будет отредактировать ваш /etc/postgresql/9.1/main/environment(адаптируйте к вашей версии PostgreSQL) на сервере и добавьте что-то вроде PYTHONPATH='<path to your module>'.

14 голосов
/ 31 октября 2013

Поскольку для модификации PYTHONPATH пользователя postgres, вероятно, потребуется перезапуск сервера, несколько проще добавить путь из Python через

from sys import path
path.append( '/path/to/your/module' )
...