Как установить модуль 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' )