PyDev और ग्रहण के साथ अनारक्षित आयात मुद्दे


108

मैं PyDev और Python के लिए बहुत नया हूं, हालांकि मैंने जावा के लिए ग्रहण का काफी उपयोग किया है। मैं पायथॉन के कुछ उदाहरणों के माध्यम से काम करने की कोशिश कर रहा हूं और यह एक अत्यंत तुच्छ समस्या की तरह महसूस करता है जो सिर्फ अत्यधिक कष्टप्रद हो रही है। मैं उबंटू लिनक्स 10.04 का उपयोग कर रहा हूं।

मैं फ़ाइल odbchelper.py का उपयोग करने में सक्षम होना चाहता हूं, जो निर्देशिका में स्थित है /Desktop/Python_Tutorials/diveintopython/py

यहाँ मेरा उदाहरण है कि मैं अपने PyDev / ग्रहण परियोजना में काम कर रहा हूँ।

import sys
sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py")

यह ठीक काम करता है, लेकिन फिर मैं अपने कोड की अगली पंक्ति चाहता हूं:

import odbchelper

और यह हर बार एक अनसुलझे आयात त्रुटि का कारण बनता है। मैंने __init__.pyफाइलों को सिर्फ हर डायरेक्टरी के बारे में बताया है और यह कुछ भी मदद नहीं करता है। मैंने __init__.pyप्रोजेक्ट स्थान और odbchelper.py फ़ाइल के बीच निर्देशिकाओं के विभिन्न स्तरों पर एक समय में एक फाइल जोड़ने की कोशिश की है , और मैंने __init__.pyएक साथ सभी निर्देशिकाओं में फ़ाइलों को जोड़ने की भी कोशिश की है । न काम करता है।

मैं केवल इतना करना चाहता हूं कि किसी अन्य निर्देशिका में कहीं एक परियोजना है, कहो /Desktop/MyStuff/Project, जिसमें मेरे पास उदाहरण है। उदाहरण के लिए ... और फिर उदाहरण के लिए से मैं odbchelper.py आयात करना चाहता हूं/Desktop/Python_Tutorials/diveintopython/py/

हर संदेश बोर्ड की प्रतिक्रिया मैं केवल sys.path.append()इस निर्देशिका को अपने पथ में जोड़ने के लिए फ़ंक्शन का उपयोग करने के लिए कह सकता हूं, और फिर इसे आयात कर सकता हूं ... लेकिन यह ठीक है कि मैं अपने कोड में क्या कर रहा हूं और यह काम नहीं कर रहा है।

मैंने त्रुटि संदेश को दबाने के लिए Ctrl- 1ट्रिक को भी आजमाया है , लेकिन कार्यक्रम अभी भी सही ढंग से काम नहीं कर रहा है। मैं, कोई त्रुटि मिलती है ImportError: No module named odbchelper। तो यह स्पष्ट रूप से जोड़ा गया पथ नहीं है, या कुछ समस्या है जो __init__.pyफ़ाइलों को जोड़ने के मेरे कई क्रमपरिवर्तन से चूक गई है।

यह बहुत निराशाजनक है कि यह कुछ सरल ... कुछ फ़ाइल से चीजों को कॉल करना जो मेरी मशीन पर कहीं और मौजूद हैं ... इसके लिए बहुत प्रयास की आवश्यकता है।


सुनिश्चित करें कि आपके PYTHONPATH में सभी आवश्यक निर्देशिकाओं के लिए मामला (पूंजीकरण) सही है।
कैम जैक्सन

मुझे पता है कि यह पहले ही उत्तर दिया जा चुका है, लेकिन मुझे grpमॉड्यूल के लिए अनसुलझा आयात मिल रहा था । मैंने इसे builtinsवरीयता में सूची में जोड़ा > PyDev> Interpreters> Python> जबरन निर्मित और फिर भी उस मॉड्यूल के लिए स्वतः पूर्णता प्राप्त करें
user1040495

जवाबों:


132

आपके pydev प्रोजेक्ट के गुणों में, "बाहरी लाइब्रेरी" नामक उप-फलक के साथ "PyDev - PYTHONPATH" नामक एक फलक है। आप __init__.pyउस फलक का उपयोग करके पथ में स्रोत फ़ोल्डर (कोई भी फ़ोल्डर है ) जोड़ सकते हैं । आपका प्रोजेक्ट कोड तब उन स्रोत फ़ोल्डरों से मॉड्यूल आयात करने में सक्षम होगा।


4
आप Pydev गुण ठीक से सेट हैं, तो आप के साथ गड़बड़ की जरूरत नहीं हैsys.path
वेलोसिरेप्टर्स

6
अन्य खोजकर्ताओं के लिए, मैं अपना अनुभव जोड़ना चाहता था -Windows 7, Python 2.7.1, Eclipse 3.6.2, PyDev, Pyschopg (Python 2.7 amd64 के लिए)। साइकोग की स्थापना C: \ Python27 \ Lib \ साइट-संकुल \ psycopg2 (पायथन 2.7 इंस्टालेशन के तहत) में गई। मैंने पहली बार उस फोल्डर और सभी चाइल्ड फोल्डर को init .py के साथ संदर्भित किया था, लेकिन पाया कि मुझे site_packages फोल्डर को भी संदर्भित करना था। ( Stackoverflow.com/questions/2983088/unresolved-import-models ) ( stackoverflow.com/questions/4631377/... )
जेफ Maass

86
ध्यान देने के लिए एक और बिंदु - इस काम के लिए ग्रहण को फिर से शुरू करने की आवश्यकता हो सकती है। यह केवल "फ़ाइल -> पुनः आरंभ" के माध्यम से काम करता है और न कि मैन्युअल रूप से बंद करने और फिर से खोलने से।
सोलिटबेट

18
महत्वपूर्ण नोट: मैंने पाया है कि दुभाषिया ऑटो कॉन्फ़िगरेशन जोड़ता है C:\Python27\lib\site-packages, लेकिन मेरे कंप्यूटर पर, काम करने वाला फ़ोल्डर कैपिटल में है C:\Python27\Lib\site-packages:। ऊपरी-केस एक के साथ लोअर-केस प्रविष्टि की जगह, और फिर फ़ाइल-> पुनः आरंभ ने मेरे लिए समस्या को ठीक किया। उम्मीद है कि वहाँ किसी और की मदद करता है :)
कैम जैक्सन

10
@soulBit मेरी इच्छा है कि मैं 20 बार टिप्पणी कर सकता हूं, मैंने यह जानने की कोशिश में अच्छा समय बिताया है कि मेरा आयात अभी तक अनसुलझा क्यों था। धन्यवाद
मैट डॉज

51

मैं ग्रहण केपलर 4.3, PyDev 3.9.2 का उपयोग कर रहा हूं और मेरे ubuntu 14.04 पर मुझे उसी समस्या का सामना करना पड़ा। मैंने कोशिश की और घंटों बिताए, उपरोक्त सभी विकल्पों के साथ लेकिन व्यर्थ। फिर मैंने निम्नलिखित कोशिश की जो महान था:

  • प्रोजेक्ट का चयन करें -> राइटक्लिक -> PyDev -> निकालें PyDev प्रोजेक्ट कॉन्फ़िगरेशन
  • फ़ाइल-> पुनः आरंभ करें

और मैं एक व्याख्याकार के रूप में पायथन 2.7 का उपयोग कर रहा था, हालांकि यह प्रभाव नहीं करता है, मुझे लगता है।


5
ग्रहण को पुनः आरंभ करने की आवश्यकता नहीं है, बस फ़ाइल को बंद करें और पुनः खोलें। यह एक्लिप्स लूना के साथ विंडोज पर भी काम किया, धन्यवाद!
नोआम मानोस

चेतावनियों को गायब करने के लिए मुझे दो बार ग्रहण को फिर से शुरू करना पड़ा। धन्यवाद
व्लादिमीर एस

पायथन 3.7 के साथ भी काम करता है। इस सवाल का हल होना चाहिए।
SPRBRN

मैंने यह कोशिश की और अब मैं अपना DEV सर्वर शुरू नहीं कर सकता। मैं फ़ाइल को कैसे बदलूँ?
ली लॉफिस

@ BitByty-Bake मूल कारण क्या है?
अकोस्टिस

42

मैंने सिर्फ एक WXWindows प्रोजेक्ट को Python 2.7 में अपग्रेड किया था और नए इंटरप्रेटर को पहचानने के लिए Pydev को पाने में परेशानी का कोई अंत नहीं था। इंटरप्रेटर को कॉन्फ़िगर करने के ऊपर जैसा काम किया है, वैसा ही एक्लिप्स और पाइदेव की एक नई स्थापना की। सोचा कि अजगर का कुछ हिस्सा भ्रष्ट रहा होगा, इसलिए मैंने सब कुछ फिर से स्थापित किया। Arghh! बंद और परियोजना को फिर से खोल दिया, और इन सभी परिवर्तनों के बीच ग्रहण को फिर से शुरू किया।

अंतिम रूप से आपने देखा कि प्रोजेक्ट पर राइट क्लिक करके आप 'PyDev प्रोजेक्ट कॉन्फिगर को हटा सकते हैं'। फिर इसे एक पीडदेव परियोजना में फिर से बनाया जा सकता है, अब यह सोने के समान अच्छा है!


हाँ, बंद कर दिया और परियोजना फिर से खोल दी कि परेशान ImportError संदेशों के छुटकारा पाने के लिए
somnathchakrabarti

17

मैंने अपना पाइथनथ तय किया और जब मैं कंसोल के माध्यम से सामान आयात करता था तो सब कुछ बांका था, लेकिन इन सभी पहले से अनसुलझे आयातों को अभी भी मेरे कोड में त्रुटियों के रूप में चिह्नित किया गया था, चाहे मैंने कितनी बार भी ग्रहण को फिर से शुरू किया हो या परियोजना को ताज़ा / साफ़ किया हो।

मैंने प्रोजेक्ट पर राइट क्लिक किया-> Pydev-> एरर मार्कर हटाएं और इससे उस समस्या से छुटकारा मिला। चिंता न करें, यदि आपके कोड में वास्तविक त्रुटियां हैं, तो उन्हें फिर से चिह्नित किया जाएगा।


यह odoo 10 के साथ लाइसेंस का उपयोग करके ठीक काम करता है। धन्यवाद!
दीदीयर

11

परियोजना -> गुण -> pydev-pythonpath -> बाहरी पुस्तकालय -> स्रोत फ़ोल्डर में जोड़ें, परियोजना के बराबर फ़ोल्डर जोड़ें। फिर ग्रहण को पुनः आरंभ करें।


2
खैर, यह वही था जिसने मेरा मुद्दा तय किया।
साइमन हेवर्ड

फ़ाइल को फिर से बंद करने और फिर से खोलने की आवश्यकता नहीं है। मेरे लिए यह तय!
जेरथ

4

यहाँ मेरे लिए क्या काम किया गया है (आत्महत्या द्वारा आत्महत्या):

1) Restart using restart from the file menu
2) Once it started again, manually close and open it.

यह अब तक का सबसे सरल उपाय है और यह कष्टप्रद चीज को पूरी तरह से हटा देता है।


1

इस समस्या को हल करने के दो तरीके हैं:

  • "पायथन दुभाषियों" से पायथन दुभाषिया को हटाएं और इसे फिर से जोड़ें।
  • या सिर्फ अपने प्रोजेक्ट में उपयोग किए जा रहे इंटरप्रेटर में पुस्तकालयों के साथ फ़ोल्डर जोड़ें, मेरे मामले में मैं "बोतल" का उपयोग कर रहा था और मेरे द्वारा जोड़ा गया फ़ोल्डर "c: \ Python33 \ Lib \ साइट-संकुल \ बोतल-0.11.6" था। -py3.3.egg "

अब मुझे कोई त्रुटि दिखाई नहीं दे रही है, और कोड पूरा करने की सुविधा "बोतल" के साथ भी काम करती है।


1

मैं ग्रहण 4.2.0 (जूनो) और PyDev 2.8.1 चला रहा हूं, और इस समस्या में मेरी साइट-संकुल पथ पर स्थापित एक लीब के साथ भाग गया। इस SO प्रश्न के अनुसार:

पायदेव और * .पाइक फाइलें

... वहाँ PyDev और pyc फ़ाइलों के साथ एक समस्या है। जिस विशेष परिवाद के संदर्भ में मैंने संदर्भ देने की कोशिश की, वह सब कुछ है जो pyc फाइलें हैं।

यहाँ मैंने इसे संबोधित करने के लिए क्या किया है:

  1. Https://github.com/Mysterie/uncompyle2 से unyle2 इंस्टॉल करें
  2. साइट-संकुल lib में * .pyc फ़ाइलों के विरूद्ध unyle2 चलाएं। उदाहरण:

    unyle2 -r -o / tmp / path / to / site-package / lib

  3. परिणामी नाम बदलें।
  4. इन * .py फ़ाइलों को साइट-संकुल पथ पर ले जाएँ / कॉपी करें
  5. ग्रहण में, फ़ाइल> पुनरारंभ करें का चयन करें

.Pyc फ़ाइलों से संबंधित अनसुलझे आयात त्रुटि अब गायब हो जानी चाहिए।


0

निम्नलिखित, मेरी राय में समस्या का समाधान होगा

  1. जोड़ा जा रहा है init अपने "~ / डेस्कटॉप / Python_Tutorials / diveintopython / py" फ़ोल्डर में .py
  2. विंडो पर जाएँ -> प्राथमिकताएँ -> PyDev -> Interpreters -> पायथन इंटरप्रेटर अपनी पायथन इंटरप्रिटर सेटिंग को हटाने के लिए (इसका कारण यह है कि PyDev किसी भी सिस्टम Pythonath पर किए गए किसी भी अपडेट को ऑटो रीफ़्रेश करने में असमर्थ है)
  3. पहले की तरह ही विवरण के साथ व्याख्याकार में जोड़ें (यह आपके पायथन इंटरप्रेटर सेटिंग को आपके पायथनपैथ को किए गए अपडेट के साथ ताज़ा करेगा)
  4. अंत में चूंकि आपका "~ / डेस्कटॉप / Python_Tutorials / diveintopython / py" फ़ोल्डर एक मानक पायथनपैथ नहीं है, इसलिए आपको इसे जोड़ने की आवश्यकता होगी। इसे करने के दो तरीके हैं।

ए। जैसा कि डेविड जर्मन ने सुझाव दिया था। हालाँकि यह केवल उन विशेष परियोजनाओं के लिए लागू होता है जो आप बी में हैं। विंडो के अंतर्गत एक नए पायथनपैथ में "~ / डेस्कटॉप / Python_Tutorials / diveintopython / py" में जोड़ें -> प्राथमिकताएँ -> PyDev -> इंटरप्रिटर्स -> Python Interpreter -> लाइब्रेरी सबटैब -> NewFolder

आशा करता हूँ की ये काम करेगा।


0

PYTHONPATH, Interpreter, और Grammar को समझकर मैंने समस्या के समाधान की कोशिश करने के बाद, अतिरिक्त लाइब्रेरियों को आयात करने के कुछ मुद्दे लिए थे, मैंने पाया कि मैंने सब कुछ लिखा था लेकिन समस्याएं जारी हैं। उसके बाद, मैं सिर्फ फाइलों में एक नई खाली लाइन जोड़ता हूं जिसमें आयात त्रुटियां थीं और उन्हें सहेजा गया था और त्रुटि हल हो गई थी


-1
KD.py

class A:
a=10;

KD2.py 
from com.jbk.KD import A;
class B:
  b=120;

aa=A();
print(aa.a)

यह मेरे लिए पूरी तरह से फ़ाइल काम करता है

एक और उदाहरण है

main.py
=======
from com.jbk.scenarios.objectcreation.settings import _init
from com.jbk.scenarios.objectcreation.subfile import stuff

_init();
stuff();

settings.py
==========
def _init():
print("kiran")


subfile.py
==========
def stuff():
print("asasas")    

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