2012-08-12 15 views
12

मैं पाइथन मॉड्यूल की "लाइब्रेरी" बनाना चाहता हूं जिसे मैं कई अलग-अलग प्रोजेक्ट फ़ोल्डर्स से एक्सेस कर पाऊंगा।पाइथन "लाइब्रेरी" बनाने के लिए आदर्श तरीका

उदाहरण के लिए, मैं पाइथन स्क्रिप्ट/proj1/और/proj2// lib/तक पहुंच प्राप्त करने के लिए चाहता हूं।

/lib/help.py 
/lib/more_help.py 

/proj1/script.py 
/proj1/script2.py 

/proj2/this_script.py 
/proj2/another_script.py 

मैं सभी पाइथन स्क्रिप्ट के साथ एक एकल निर्देशिका, नहीं करना चाहती इस बल्कि बेतरतीब लगता है के रूप में। मैं निश्चित रूप से एक ही/lib/स्क्रिप्ट को प्रत्येक अलग-अलग परियोजनाओं में कॉपी नहीं करना चाहता हूं।

पायथन में इसे संभालने का आदर्श तरीका क्या है? क्या यह appending to Python's path है? या यह एक हैक का अधिक है? ऐसा लगता है कि फ़ाइलों को कम पोर्टेबल बनाने का नुकसान होता है। या यह this question/answer सापेक्ष पथ का उपयोग करने के बारे में है? या कुछ और?

मुझे यह जोड़ना चाहिए कि यदि यह मायने रखता है तो मुझे 3.x के बजाय पायथन 2.x में दिलचस्पी है।

उत्तर

8

lib/ को package में बदलें, फिर इसे sys.path (या एक नई प्रविष्टि जोड़ें) में निर्देशिकाओं में से एक में डाल दें। फिर आप आयात कर सकते हैं उदा। आपकी परियोजनाओं में lib.help

3

मानक सड़क का पालन करें जो हर कोई लेता है: उचित कोड के साथ अपना कोड उचित पायथन पैकेज बनाएं। लाभ हैं: easy_install'able, आसान वितरण योग्य, कमांड लाइन स्क्रिप्ट की आसान पीढ़ी (console_scripts प्रविष्टि बिंदु के माध्यम से) आदि ....

2

मुझे लगता है कि आप अपने प्रोजेक्ट के पर्यावरण को नियंत्रित रखने के लिए उपयोग कर सकते हैं सबसे अच्छा टूल है virtualenv। आप एक नया आभासी वातावरण बनाते हैं और वहां अपने पैकेज स्थापित करते हैं, फिर आप पाइथन निष्पादन योग्य का उपयोग करके अपनी प्रोजेक्ट चलाते हैं जो वर्चुअलएन्व आपको प्रदान करता है।

शायद आपको अपनी लाइब्रेरी में distutils का उपयोग करना चाहिए, इस तरह वर्चुअलएन्व के साथ इसे स्थापित करना वास्तव में आसान है, क्योंकि वर्चुअलएन्व वर्चुअल वातावरण में setuptools या वितरित करता है, इस प्रकार आप को पिपी से या अपने से वर्चुअल पर्यावरण पैकेज में स्थापित करने की अनुमति देता है स्थानीय मशीन।

कस्टम बूटस्ट्रैप स्क्रिप्ट बनाने की भी संभावना है जो वर्चुअल वातावरण निर्माण के बाद स्वचालित रूप से कुछ पुस्तकालय स्थापित करता है।

+0

मैंने इस उपकरण के बारे में नहीं सुना था, लेकिन निश्चित रूप से इसे देखेंगे। सिफारिश के लिए धन्यवाद! –

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