2016-02-18 6 views
7

PTVS साथ दृश्य स्टूडियो में मैं दो अलग-अलग अजगर परियोजनाओं से एक परियोजना में अजगर स्रोत कोड का उपयोग करने के लिए, एक एक अजगर स्रोत उपयोग के लिए lib.py नामक फ़ाइल कार्यों का एक पुस्तकालय के रूप में होता है और दूसरा एक मुख्य है जो पुस्तकालय में कार्यों का उपयोग करता है। मैं मुख्य में एक import बयान उपयोग कर रहा हूँ पुस्तकालय परियोजना में कार्यों का संदर्भ लेकिन निम्न त्रुटि प्राप्त करने के लिए: दृश्य स्टूडियो इसलिए का उपयोग कर मेरी मानसिकता अन्य नेट परियोजनाओं के लिए संदर्भ जोड़नेPTVS: कैसे संदर्भ या एक दूसरी परियोजना

No module named lib

मैं मुख्य रूप से कार्यक्रम एफ # में।

मैं इसे पूरा करने के लिए पाइथोनिक तरीके से कैसे सोचूं?

उत्तर

14

पायथन .NET की तरह संदर्भों का उपयोग नहीं करता है लेकिन खोजे गए पथ का उपयोग करता है। स्रोत फ़ाइल वाली निर्देशिका को शामिल करने के लिए खोज पथ को संशोधित करने की आवश्यकता है। देखें: The Module Search Path

समाधान एक्सप्लोरर के साथ विजुअल स्टूडियो में प्रोजेक्ट को देखते हुए प्रत्येक प्रोजेक्ट के लिए खोज पथ दिखाता है।

enter image description here

खोज पथ को संशोधित करने के लिए:

अजगर आयात करने के लिए स्रोत कोड युक्त फ़ाइल के लिए निर्देशिका प्राप्त करें।

उदा। lib.py

समाधान एक्सप्लोरर राइट क्लिक में lib.py पर और परियोजना है कि मॉड्यूल आयात करेगा के लिए अब कॉपी पथ

enter image description here

चयन
उदा ConsoleDriver_Python

राइट खोजें पथ पर क्लिक करें और खोज करने के लिए पथ फ़ोल्डर जोड़ें का चयन करें ...

enter image description here

जो एक फ़ोल्डर संवाद

enter image description here

राइट क्लिक करें प्रदर्शित करने और से रास्ते में पेस्ट क्लिपबोर्ड फ़ाइल नाम को हटाकर इसे एक निर्देशिका में भी बदलें।

enter image description here

क्लिक करें फ़ोल्डर का चयन

अब यकीन खोजें पथ अद्यतन किया गया था बनाने के लिए परियोजना की जाँच करें।

enter image description here

आयात त्रुटि अब मंजूरी दे दी जानी चाहिए।

+1

यह एक उत्कृष्ट उत्तर है! अच्छा कार्य! – Del

+0

ब्याज की: [पीटीवीएस - परियोजनाएं - खोज पथ] (https://github.com/Microsoft/PTVS/wiki/Projects#search-paths) पीटीवीएस खोज पथ पर आधिकारिक दस्तावेज़ीकरण। –

+0

उपर्युक्त टिप्पणी में लिंक अब मृत है और [पायथन परियोजनाओं] पर पुनर्निर्देशित करता है (https://docs.microsoft.com/en-us/visualstudio/python/python-projects)। नए पेज पर चमकने के बाद पीटीवीएस विकसित हो रहा है, इसे पूरा करने का एक अलग तरीका हो सकता है। जब मुझे समय मिलता है तो मैं जवाब को संशोधित करने की योजना बना रहा हूं लेकिन अभी प्रोलॉग में गर्दन गहरी है। –

3

मैं बस एक बहुत विशिष्ट परिदृश्य के लिए सत्यापित उत्तर के अलावा नीचे जोड़ना चाहता था।

मुझे हाल ही में एक ही समस्या को ठीक करने के लिए कहा गया था जिसे ओपी एक कार्य मशीन के लिए अनुभव कर रहा था, जिसे हाल ही में उपयोगकर्ता खाते नए डोमेन पर माइग्रेट कर चुके थे।

सेटअप: विजुअल स्टूडियो 2013 PTVS 2.2.30718 एनाकोंडा 3.5

असल में, एनाकोंडा localmachine/UserA के लिए स्थापित किया गया था।

एक बार जब उपयोगकर्ता नए डोमेन (न्यूडोमेन/उपयोगकर्ता ए) में माइग्रेट हो गए, तो पाइथन पर्यावरण को VS2013 के भीतर से> अन्य विंडोज> पायथन वातावरण पर क्लिक करके अपडेट किया जाना था।

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

विभिन्न अन्य चीजों की कोशिश की गई, जिसमें पूरी तरह से ताजा परियोजनाएं स्थापित करने और खोज पथ का उपयोग करके उन्हें जोड़ने, लेकिन इसका कोई फायदा नहीं हुआ।

समस्या को हल करने वाली एकमात्र चीज एक उपयोगकर्ता खाते के बाहर पाइथन पर्यावरण (मेरे मामले में एनाकोंडा 3) को पुनर्स्थापित करना था (इंस्टॉल करने के दौरान "सभी उपयोगकर्ताओं के लिए, व्यवस्थापक विशेषाधिकारों का उपयोग करके" विकल्प पर क्लिक करके)।

फिर मैंने खोज फ़ोल्डर्स को पुनरारंभ किया, हटा दिया और फिर से जोड़ा, और पाइथन सभी खोज पथ समेत अपेक्षित काम करता था।

मुझे आशा है कि, किसी को मदद करता है के रूप में मैं सिर्फ इसे सुलझाने बर्बाद घंटे ...

डी :)

+0

जानना अच्छा लगा। धन्यवाद। –

+0

अच्छा खोज। इस मुद्दे पर अंतिम सूचक - एनाकोंडा को व्यवस्थापकीय विशेषाधिकारों के साथ पुनर्स्थापित करने के बाद, आपको अभी भी इसे सॉर्ट करने के लिए विंडोज़ के लिए मशीन को रीबूट करने की आवश्यकता है और VS के लिए खोज पथ को सही ढंग से समायोजित करने के लिए। –

0

या आप निम्नलिखित के साथ कोड में यह कर सकते हैं:

sys.path.append("search path") 

तो कोड आईडीई के बाहर चलाया जा सकता है।

+0

आम तौर पर मैं एक प्रश्न के किसी भी उचित उत्तर को स्वचालित रूप से ऊपर उठाता हूं। जबकि मैं एक वैध विकल्प के रूप में आपका उत्तर देखता हूं, मुझे वोट देने में संकोच नहीं होता है क्योंकि यह 'sys.path.insert() 'के रूप में सही हो सकता है, लेकिन इससे भी ज्यादा, मैं आपके द्वारा दी गई जानकारी को पहले से मौजूद होने के रूप में देखता हूं और यह एक लिंक के साथ एक टिप्पणी होना चाहिए। मैं समझता हूं कि दूसरों के बारे में जानना अच्छा विकल्प है इसलिए मैं इसे वोट नहीं दूंगा। –

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