मैं एक मॉड्यूल का उपयोग करना चाहता हूं, उदा। BeautifulSoup, मेरे अजगर कोड में, तो मैं आम तौर पर इस फ़ाइल के शीर्ष पर जोड़ें:केवल पायथन में एक मॉड्यूल आयात करें यदि यह पहले से मौजूद नहीं है
from BeautifulSoup import BeautifulSoup
हालांकि, जब मैं मॉड्यूल मैं लिख रहा हूँ वितरित करना, दूसरों BeautifulSoup नहीं हो सकता है, तो मैं बस शामिल करेंगे मेरी निर्देशिका संरचना में यह इतना की तरह:
from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData
लेकिन देव यदि क्या:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 9/19/2011 5:45 PM BeautifulSoup
-a--- 9/17/2011 8:06 PM 4212 myscript.py
अब, मेरी संशोधित myscript.py फ़ाइल शीर्ष पर इस तरह दिखेगा BeautifulSoup की स्थानीय प्रतिलिपि को संदर्भित करने के एल्पर जो मेरी लाइब्रेरी का उपयोग करता है पहले से ही सुंदर मशीन अपने मशीन पर स्थापित है? मैं myscript.py को संशोधित करना चाहता हूं ताकि यह देखने के लिए जांचें कि क्या सुंदर सूप पहले से स्थापित है या नहीं, और यदि ऐसा है, तो मानक मॉड्यूल का उपयोग करें। अन्यथा, शामिल एक का उपयोग करें।
का उपयोग करते हुए छद्म अजगर:
if fBeautifulSoupIsInstalled:
from BeautifulSoup import BeautifulSoup, CData
else:
from BeautifulSoup.BeautifulSoup import BeautifulSoup, CData
यह संभव है? यदि हां, तो कैसे?
http://effbot.org/zone/import-confusion.htm से लिया: 'जब अजगर एक मॉड्यूल का आयात करता है, यह पहली चेकों मॉड्यूल रजिस्ट्री (sys.modules) करने के लिए देखें कि मॉड्यूल पहले से ही आयात किया गया है या नहीं। यदि ऐसा है, तो पायथन मौजूदा मॉड्यूल ऑब्जेक्ट का उपयोग करता है। ' – mwan
इसे आयात करने का प्रयास करें। यदि यह काम नहीं करता है, तो आयात करें और अपनी स्थानीय प्रतिलिपि से आयात करें। अपनी स्थानीय प्रतिलिपि को कुछ और (myBeautifulSoup) नाम दें ताकि यह उपयोगकर्ता स्थापित मॉड्यूल को छिपा न सके। –
@mwan: बेन को यह जानने की आवश्यकता नहीं है कि यह पहले से ही * आयातित * है, उसे पता होना चाहिए कि यह पहले से ही * सिस्टम पर है या नहीं। –