2011-10-26 14 views
23

के लिए अतिरिक्त स्थानों का उपयोग करने के लिए पाइथन को कॉन्फ़िगर करना क्या मौजूदा स्क्रिप्ट को संशोधित किए बिना अतिरिक्त site-packages स्थानों के बारे में पाइथन को बताने का कोई तरीका है?साइट-पैकेज

मेरे सेंटोस 5.5 सर्वर पर मेरे पास एक पाइथन 2.7 स्थापना है जो /opt/python2.7.2 में स्थापित है और site-packages फ़ोल्डर /opt/python2.7.2/lib/python2.7/site-packages पर है।

इसका कारण यह है कि मैं मौजूदा पायथन 2.4 इंस्टॉल को परेशान नहीं करना चाहता था जो 5.5 वितरण के साथ भेज दिया गया था।

हालांकि एक तीसरी पार्टी पायथन एप्लिकेशन ने site-packages फ़ोल्डर को /usr/local/lib/python2.7/site-packages पर भी जोड़ा और उस स्थान पर स्वयं स्थापित किया।

यह आंशिक रूप से मेरी गलती है क्योंकि मैंने इंस्टॉल करने से पहले Makefile में PREFIX को ट्विक नहीं किया था, हालांकि अब इसके बारे में मैं इतना कुछ नहीं कर सकता।

मुझे पता है कि मैं यह कर सकता:

import sys; sys.path.insert(0, "/usr/local/lib/python2.7/site-packages") 

लेकिन यह मुझे हर स्क्रिप्ट पर नज़र रखने और इसके बाद के संस्करण है जो भविष्य में अद्यतन होना चाहिए आदर्श नहीं है जोड़ने शामिल होगा।

 
ln -sf /usr/local/lib/python2.7/site-packages/theapp /opt/python2.7.2/lib/python2.7/site-packages/theapp 

यह ठीक काम करने के लिए प्रकट होता है लेकिन वहाँ एक बेहतर तरीका है कि अगर मैं सोच रहा हूँ:

इस के आसपास पाने के लिए मैं इस तीसरे पक्ष के आवेदन के स्थान पर /opt/python2.7.2/lib/python2.7/site-packages में एक प्रतीकात्मक कड़ी बनाया?

उत्तर

36

आप Site-specific configuration hook का उपयोग कर सकते हैं।

"एक पथ विन्यास फाइल एक फ़ाइल जिसका नाम प्रपत्र name.pth है और जैसा कि ऊपर उल्लेख चार निर्देशिका में से एक में मौजूद है, उसकी सामग्री को अतिरिक्त आइटम (प्रति पंक्ति) sys.path को जोड़ा जा सकता है।"

आपके मामले में, आप बस निर्देशिका के रास्ते से युक्त एक .pth फ़ाइल में छोड़ने को शामिल करने के द्वारा प्राप्त करने के लिए आप क्या चाहते हैं सक्षम होना चाहिए:

[[email protected]]$ echo "/usr/local/lib/python2.7/site-packages/" > /opt/python2.7.2/lib/python2.7/site-packages/usrlocal.pth 
+0

यह एक इलाज करता है, हालांकि मैंने गोली मारने और तैनाती को ठीक करने का फैसला किया। लेकिन वैसे भी धन्यवाद, भविष्य के लिए जानना उपयोगी है। – Kev

+2

यह पाइथन पथ के * अंत * के पथ को जोड़ता है। क्या होगा यदि आप अपनी कस्टम साइट-पैकेज पहले आना चाहते हैं? मैं कुछ सफलता के साथ साइटcustomize.py फ़ाइल के साथ प्रयोग कर रहा हूं, लेकिन ऐसे किनारे के मामले लगते हैं जहां पाइथन पथ को आसानी से जोड़ना पर्याप्त नहीं है। – wryfi

2

आप एक साथ अजगर निष्पादन बदल सकते रैपर स्क्रिप्ट जो आपके अतिरिक्त इंस्टॉलपाथ को PythonPATH में जोड़ती है। लेकिन यह एक झुकाव है।

लेकिन मैं एड-ऑन की स्थापना को ठीक करने का प्रयास करता हूं ताकि यह साइट-पैकेज डीआईआर में ठीक से चला जा सके।

+0

शॉन के जवाब ने चाल की, लेकिन आप सही भी हैं कि इंस्टॉल को ठीक करने में लंबी अवधि में वास्तव में बेहतर है। – Kev