2011-11-07 11 views
13

मुझे अपने पीएल/पायथन फ़ंक्शन के अंदर एक तृतीय पक्ष मॉड्यूल आयात करने की आवश्यकता है। ऐसा लगता है कि पीएल/पायथन एक आंतरिक पायथन का उपयोग करता है जिसमें कोई तृतीय पक्ष मॉड्यूल नहीं है।पोस्टग्रेस पीएल/पायथन के लिए तीसरे पक्ष मॉड्यूल को कैसे स्थापित करें?

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/अजगर में मॉड्यूल, ताकि मैं इसे अपने संग्रहीत प्रक्रिया संहिता अंदर से आयात कर सकते हैं स्थापित है:

मैं त्रुटि के इस प्रकार मिल सकता है?

उत्तर

17

pl/पायथन के उन सभी मॉड्यूल तक पहुंच है जो सामान्य पायथन दुभाषिया के पास तब तक होंगे जब तक कि वे सर्वर पर $PYTHONPATH (और उपयोगकर्ता जो पोस्टग्रेस सेवा चलाता है) तक हों। क्या import lucene काम करता है यदि आप इसे सर्वर पर पायथन दुभाषिया में चलाते हैं?

यदि आपका मॉड्यूल कहीं और स्थापित है (उदा। डिस्ट-पैकेज आदि), तो आपको सर्वर पर /etc/postgresql/9.1/main/environment (अपने पोस्टग्रेएसक्यूएल संस्करण में समायोजित) फ़ाइल को संपादित करने और PYTHONPATH='<path to your module>' जैसे कुछ जोड़ने की आवश्यकता होगी।

+0

कुछ हद तक आसान है '/ etc/PostgreSQL/9.1/मुख्य/environment' केवल प्रतीत होता है उबंटू पर एक बात हो, [यहां] देखें (https://stackoverflow.com/questions/9595683/postgresql-environment-file-on-mac-osx) – bcattle

11

के बाद से postgres उपयोगकर्ता की संशोधित PYTHONPATH संभावना एक सर्वर को पुनः आरंभ करने की आवश्यकता होगी, यह अजगर के भीतर से पथ को जोड़ने के लिए, के माध्यम से

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

यह स्वीकार्य उत्तर होना चाहिए –

संबंधित मुद्दे