Как установить модуль 3rd party для postgres pl / python?

Мне нужно импортировать сторонний модуль внутри моей функции 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 ответов


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

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


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

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