2009-07-21 21 views
7

यदि मेरे पास फ़ाइलें x.py और y.py है। और y.py x.py का लिंक (प्रतीकात्मक या हार्ड) है।पायथन - एक फ़ाइल आयात करना जो एक प्रतीकात्मक लिंक है

यदि मैं अपनी स्क्रिप्ट में दोनों मॉड्यूल आयात करता हूं। क्या यह एक बार आयात करेगा या यह मानता है कि दोनों अलग-अलग फाइलें हैं और इसे दो बार आयात करें।

यह वास्तव में क्या करता है?

उत्तर

9

पायथन इसे दो बार आयात करेगा।

एक लिंक एक फ़ाइल सिस्टम अवधारणा है। पायथन दुभाषिया के लिए, x.py और y.py दो अलग-अलग मॉड्यूल हैं।

 
$ echo print \"importing \" + __file__ > x.py 
$ ln -s x.py y.py 
$ python -c "import x; import y" 
importing x.py 
importing y.py 
$ python -c "import x; import y" 
importing x.pyc 
importing y.pyc 
$ ls -F *.py *.pyc 
x.py x.pyc [email protected] y.pyc 
10

आप केवल इस मामले में जहां अपनी स्क्रिप्ट अपने आप में एक प्रतीकात्मक कड़ी, जिस स्थिति में sys.path की पहली प्रविष्टि लिंक का लक्ष्य युक्त निर्देशिका हो जाएगा में सावधान रहना होगा।

+0

आह, हाँ, मैं बस उसमें भाग गया। मैं अपने 'परिनियोजन' क्षेत्र में एक स्क्रिप्ट को इंगित कर रहा हूं, जो विकास के दौरान मूल प्रतिलिपि के लिए एक सिम्लिंक है जिसे मैं संपादित कर रहा हूं। मुझे यह पता लगाने में काफी समय लगा कि क्यों पाइथन को अन्य मॉड्यूल नहीं मिल पाए जो सीधे वहां बैठे हैं जहां सिम्लिंक मौजूद है। बल्कि, कष्टप्रद, वास्तव में। –

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