अन्य पायथन लिपियों में एक पायथन लिपि से चर का उपयोग करना?


9

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

मेरा Data_source.py कुछ इस तरह दिखाई देगा:

BC_BEC = "Database Connections\\BC.sde\\FOREST_BC.BC_Eco\\BC.BC_BEC"
BC_TFL = "Database Connections\\Forest_BC.sde\\BC.BC_Admin\\BC.TFL_Boundary"

और इसी तरह...

डेटा चर में इन चरों को लोड करने या उन तक पहुँचने के लिए मुझे अपनी सभी अन्य लिपियाँ कैसे मिलेंगी?


इस तरह के प्रश्न, जो कि जीआईएस के लिए पायथन मॉड्यूल या साइट-पैकेज के बजाय शुद्ध पायथन हैं, आमतौर पर स्टैक ओवरफ्लो पर शोध / पूछा जाना चाहिए ।
PolyGeo

जवाबों:


10

आप एक स्थापित पायथन मॉड्यूल बना सकते हैं, जो आपके द्वारा चलाए जा रहे हर पायथन स्क्रिप्ट से आयात करने योग्य है जिसे डिस्टुटिल्स द्वारा इसे चलाने के लिए।

पायथन डॉक से:

यदि आप सब करना चाहते हैं, तो एक फू नामक एक मॉड्यूल वितरित करना है, एक फ़ाइल foo.py में समाहित है, तो आपकी सेटअप स्क्रिप्ट इस प्रकार हो सकती है:

from distutils.core import setup
setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

फिर आप इसे इंस्टॉल कर सकते हैं

python.exe setup.py install

और फिर आप किसी भी पायथन स्क्रिप्ट से फू आयात कर सकते हैं, या आप उपयोग कर सकते हैं

python.exe setup.py bdist_wininst

मॉड्यूल के लिए एक विंडोज़ इंस्टॉलर बनाने के लिए ताकि आप इसे अन्य कंप्यूटरों में वितरित कर सकें।


'बाईट ऑफ़ पाइथन' किताब में एक अच्छा अध्याय है, जो कोण आयात करने वाले मॉड्यूल का उपयोग करके इमारत के उदाहरण दिखा रहा है।
जोंतर

मुझे एक मॉड्यूल बनाने का यह सुझाव पसंद है लेकिन मैं उनका बहुत जानकार नहीं हूँ। कमांड "python.exe setup.py" एक पॉइंटर को foo.py का उपयोग करेगा, या यह उपयोग करेगा कि वर्तमान में foo.py में क्या है? अगर मैं बाद में foo.py परिवर्तन करूँ तो भी मॉड्यूल चालू रहेगा? धन्यवाद।
उपयोगकर्ता त्रुटि

मैं भी उस किताब की तलाश करूंगा। जेसन और jonatr की मदद के लिए धन्यवाद।
यूजर एरर

शब्दावली सुधार: अधिक सटीक अजगर शब्द "पैकेज" है - प्रलेखन देखने के लिए सहायक है, और स्पष्ट है कि अजगर दुनिया में पैकेज और मॉड्यूल दो अलग-अलग चीजें हैं। इसके अलावा, एक सुझाव / संकेत: यदि आप setup.py develop(इसके बजाय install) करते हैं, तो पैकेज को संपादित किया जाएगा जैसे ही वे सहेजे जाते हैं, बिना किसी पुनर्स्थापना की आवश्यकता के। (यह मूल प्रश्नकर्ता के data_sources.py के लिए उपयुक्त है।)
दान एस।

3
क्या उपयोगकर्ता सिर्फ यह नहीं पूछ रहा है कि आयात कैसे किया जाए? इसका जवाब नीचे दे।
sgillies

12

किसी भी स्क्रिप्ट में Data_sources.py जैसी ही डायरेक्टरी में रखें

from Data_sources import BC_BEC, BC_TFL

शीर्ष पर। यह तब तक काम करता है क्योंकि जब तक आपने इसे संशोधित नहीं किया है, तब तक कार्यशील निर्देशिका हमेशा अजगर पथ के शीर्ष पर होती है।

>>> import sys
>>> sys.path[0] == ''
True

इसे भी देखें: http://diveintopython.org/getting_to_know_python/everything_is_an_object.html#d0e4550

यदि आप डेटा को अधिक व्यापक रूप से साझा करना चाहते हैं, तो आप इसे पैकेज कर सकते हैं जैसे अन्य ने सुझाव दिया है।


8

एक टेक्स्ट कॉन्फिग फाइल बनाएं और इसे पायथन के कॉन्फिगरेशन के साथ पढ़ें ।

Http://effbot.org/librarybook/configparser.htm पर आधिकारिक प्रलेखन की तुलना में थोड़ा अच्छा उदाहरण है


@usererror - एक पैकेज कोड वितरित करने के लिए अच्छा है, लेकिन यह वास्तव में आपके मापदंडों को एक स्थान पर रखने के मुद्दे को हल नहीं करता है।
जियोग्राफिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.