के बजाय पाइथन मानक लाइब्रेरी से फोर्स आयात मॉड्यूल मेरे पास मेरे PYTHONPATH में एक निर्देशिका में एक मानक मॉड्यूल है जो मानक लाइब्रेरी मॉड्यूल में से एक के समान नाम है, ताकि जब मैं import module_name
, उस मॉड्यूल को लोड हो जाए। यदि मैं मूल मानक लाइब्रेरी मॉड्यूल का उपयोग करना चाहता हूं, तो क्या Python को PYTHONPATH निर्देशिका के बजाय मानक लाइब्रेरी से आयात करने के लिए मजबूर करने का कोई तरीका है, कस्टम मॉड्यूल का नाम बदलने और नए संदर्भ को इंगित करने के लिए प्रत्येक संदर्भ को बदलने से कम?पायथन मानक लाइब्रेरी से PYTHONPATH डिफ़ॉल्ट
उत्तर
आदर्श समाधान मानक पुस्तकालय में नहीं कुछ करने के लिए अपने मॉड्यूल नाम बदलने के लिए किया जाएगा।
तुम भी switch absolute imports on अगर आप अजगर 2.5+ पर हैं कर सकते हैं:
from __future__ import absolute_import
मानक पुस्तकालय संस्करण को पकड़ने के लिए मैं सापेक्ष आयात का उपयोग कैसे करूं? – jrdioko
मैंने आपके प्रश्न, संपादित उत्तर को गलत समझा। –
यह वास्तव में मदद नहीं करेगा? –
आपने मॉड्यूल आप imp मॉड्यूल के साथ आयात करना चाहते हैं चुन सकते हैं:
import imp
mymodule = imp.load_module(name, file, pathname, description)
मत करो।
यदि आपने गलती से मानक लाइब्रेरी मॉड्यूल नाम चुना है, तो संघर्ष समाप्त करने के लिए अपना मॉड्यूल नाम बदलें।
/home/me/myproject
से एक के लिए MyProject निर्देशिका में एक प्रतीकात्मक कड़ी बनाओ:
यह शायद सबसे अच्छा समाधान है, दोनों आने वाले कोडर में भ्रम पैदा करने के लिए नहीं, और तथ्य यह है कि एक मॉड्यूल आयात करने वाला व्यवहार जो पहले से ही एक सापेक्ष आयात नहीं था, पूर्ण आयात के साथ बदल नहीं जाएगा। –
ऐसा करने के लिए सबसे अच्छा तरीका है एक निर्देशिका में अपनी परियोजना लगाने के लिए मान लीजिए कि "MyProject" पर रहता है कि चलो है डिफ़ॉल्ट अजगर पथ, उदाहरण के लिए:
# ln -s /home/me/myproject /usr/local/lib/python2.7/dist-packages/myproject
अब जब आप चाहते हैं अपनी परियोजना के भीतर एक मॉड्यूल आयात करने के लिए बस एक अजगर दुभाषिया खोलें।
>>> from myproject.mymodule import *
यह एक आकर्षण की तरह काम करेगा।
एक आखिरी बात, अपने प्रोजेक्ट को पाइथन पथ में पाए गए जैसा ही नाम न दें, इसलिए आयात करते समय आपको कोई समस्या नहीं होगी।
'पायथनपथ' का उपयोग करने का एक बेहतर तरीका होगा। इसके अलावा 'x आयात * से' का उपयोग न करें क्योंकि यह स्थैतिक विश्लेषण टूल को भ्रमित करता है और यह समझना मुश्किल बनाता है कि एक चर कहाँ से आता है। – bfontaine
अपने मॉड्यूल का नाम बदलने के बारे में इतना बुरा क्या है? –
इसमें दर्जनों फ़ाइलों में बदलाव करना शामिल होगा। ऐसा लगता है कि यह सबसे अच्छा समाधान है हालांकि। – jrdioko
आपके पास 'grep' है, इसलिए प्रत्येक को ढूंढना और उन्हें ठीक करना मुश्किल नहीं होना चाहिए। –