मैं एक पायथन प्लगइन विकसित कर रहा हूं, लक्ष्य QGIS में एक PyPI पायथन लाइब्रेरी की कार्यक्षमता को एकीकृत कर रहा है जिसे 'उन्नयन' कहा जाता है।
क्या बाहरी पायथन पुस्तकालयों को स्थापित करने और उन्हें पायथन प्लगइन्स को उपलब्ध कराने का एक स्वतंत्र तरीका है?
मैं पहले से ही बाहरी पायथन निर्भरता स्थापित करने के लिए अलग-अलग सिस्टम विशिष्ट प्रक्रियाओं को जानता हूं, जो मैं करना चाहता हूं वह यह है कि लोगों को पागल बनाने के बिना विभिन्न वातावरणों में अपने प्लगइन को वितरित करना है।
जो मुझे पहले से पता है
वेब और इसी तरह के अन्य प्रश्नों की खोज से ऐसा लगता है कि ओएस स्वतंत्र समाधान नहीं है।
विंडोज उपयोगकर्ता
अजगर को क्यूजीआईएस पैकेज के अंदर पैक और वितरित किया जाता है, इसलिए बाहरी पायथन पुस्तकालयों को स्थापित करने के लिए आपको OSGeo4W शेल के माध्यम से जाना होगा और वहां से पाइप का उपयोग करना होगा।
सम्बंधित लिंक्स:
- क्यूजीआईएस स्टैंडअलोन और पायथन मॉड्यूल
- OSGeo4W पायथन में पायथन सेटपूल स्थापित करना
- विंडोज पर QGIS के लिए 3rd पार्टी पायथन लाइब्रेरी कैसे स्थापित करें?
ओएस एक्स उपयोगकर्ता
इस स्थिति में QGIS अंतर्निहित पायथन का उपयोग करता है जो OS X के अंदर पहले से ही स्थित है और उस पर स्थित है:
/usr/bin/python
यहां मुद्दा यह है कि डिफ़ॉल्ट रूप से स्थापित पाइप की कुछ सीमाएं हैं और बहुत अधिक विशेषाधिकारों की आवश्यकता है।
पायथन को स्थापित करने के लिए एक त्वरित समाधान घर-का उपयोग करना है ताकि आपका पाइप उपयोगकर्ता-परिवर्तनीय पायथन ढांचे के खिलाफ चल सके। इस दृष्टिकोण का विवरण यहां देखें ।
पाइप के माध्यम से सभी पायथन पुस्तकालयों को स्थापित करने के बाद, आपको बस उनके निर्देशिका को पाथ चर में जोड़ना होगा।
ओएस एक्स उपयोगकर्ताओं के लिए वैकल्पिक तरीका
प्लगइन पायथन कोड के अंदर आप आवश्यक पैकेजों को स्थापित करने के लिए सिस्टम द्वारा प्रदान किए गए पाइप का उपयोग कर सकते हैं। तब आप पथ में इसे जोड़ने के लिए बस स्थापित पैकेज बना सकते हैं।
import sys
import pip
pip.main(['install','--target=/Devel/test', 'elevation'])
sys.path.append("/Devel/test")
घर का बना लेकिन काम कर समाधान (दोनों लिनक्स और ओएस एक्स पर परीक्षण)
मैंने वैकल्पिक तरीके से जाने का फैसला किया क्योंकि यह लाइब्रेरी अपडेट और रखरखाव को प्लगइन से अलग रखने की अनुमति देता है। हर बार जब कोई नया उपयोगकर्ता प्लगइन स्थापित करता है तो एलिवेशन लाइब्रेरी का नवीनतम संस्करण सीधे प्लग इन के एक उपनिर्देशिका के अंदर पाइप द्वारा डाउनलोड और इंस्टॉल किया जाता है।
self.plugin_dir = os.path.dirname(__file__)
self.elevation_dir = os.path.join(self.plugin_dir, 'elevation')
# Checking the presence of elevation library
try:
import elevation
except:
pip.main(['install', '--target=%s' % self.elevation_dir, 'elevation'])
if self.elevation_dir not in sys.path:
sys.path.append(self.elevation_dir)