2011-11-07 25 views
13

Tôi cần nhập mô-đun bên thứ 3 bên trong hàm pl/python của tôi. Có vẻ như pl/python sử dụng một con trăn nội bộ mà không có bất kỳ mô-đun bên thứ 3 nào.Làm thế nào để cài đặt mô-đun bên thứ 3 cho postgres pl/python?

tôi nhận được loại hình báo lỗi:

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 

Làm thế nào để cài đặt các module vào pl/python, vì vậy mà tôi có thể nhập nó từ bên trong mã thủ tục lưu trữ của tôi?

Trả lời

17

pl/python có quyền truy cập vào tất cả các mô-đun mà trình thông dịch Python bình thường sẽ có miễn là chúng ở trong $PYTHONPATH trên máy chủ (và người dùng chạy dịch vụ bưu chính). import lucene có hoạt động nếu bạn chạy nó trong trình thông dịch Python trên máy chủ không?

Nếu mô-đun của bạn được cài đặt ở nơi khác (ví dụ: không phân gói, v.v.), thì bạn cần chỉnh sửa tệp /etc/postgresql/9.1/main/environment (điều chỉnh phiên bản PostgreSQL) trên máy chủ và thêm một cái gì đó như PYTHONPATH='<path to your module>'.

+0

'/ etc/postgresql/9.1/main/environment' chỉ xuất hiện để là một điều trên Ubuntu, xem [ở đây] (https://stackoverflow.com/questions/9595683/postgresql-environment-file-on-mac-osx) – bcattle

11

Kể từ khi sửa đổi PYTHONPATH của postgres người dùng có thể sẽ cần khởi động lại máy chủ, nó hơi dễ dàng hơn để thêm đường dẫn từ bên trong Python, qua

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

Đây phải là câu trả lời được chấp nhận –

Các vấn đề liên quan