PyCharm में अनारक्षित संदर्भ मुद्दा


373

मेरे पास एक निर्देशिका संरचना है

├── simulate.py
├── src
   ├── networkAlgorithm.py
   ├── ...

और मैं नेटवर्क मॉड्यूल को एक्सेस कर सकता हूं sys.path.insert()

import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *

हालाँकि, pycharm की शिकायत है कि यह मॉड्यूल तक नहीं पहुँच सकता है। मैं संदर्भ को हल करने के लिए पायिकम कैसे सिखा सकता हूं?

यहां छवि विवरण दर्ज करें


4
क्या src फोल्डर में __init__.pyफाइल है?
पफिन GDI

@ पफिन GDI: नहीं, यह नहीं है।
मुकदमा

5
@PuffinGDI क्या src फ़ोल्डर को इस init .py फ़ाइल की आवश्यकता है?
जैक ची

अजगर को पैकेजों की पहचान करने के लिए हां: stackoverflow.com/questions/42094723/…
rnoodle

मैंने कक्षा का नाम बदल दिया और उस पर काम करना जारी रखा। जब मैंने रन मारा, तो यह त्रुटि थी, नाम बदलना पूरी तरह से भूल गया और आयात के दौरान pycharm सुझावों की तलाश करने की कोशिश की। लानत है, सुझाव संवेदनशील हैं! - अजगर को नया !!
विग्नेश परमासिवम

जवाबों:


817

मैन्युअल रूप से इसे जोड़ना जैसा कि आपने किया है, वास्तव में ऐसा करने का एक तरीका है, लेकिन एक सरल तरीका है, और यह केवल pycharm को बता रहा है कि आप srcफ़ोल्डर को एक स्रोत रूट के रूप में जोड़ना चाहते हैं , और फिर अपने अजगर को स्रोत रूट जोड़ रहे हैं पथ।

इस तरह, आपको अपने दुभाषिया की सेटिंग में हार्ड कोड चीजों की जरूरत नहीं है:

  • srcस्रोत सामग्री रूट के रूप में जोड़ें :

                            यहां छवि विवरण दर्ज करें

  • फिर अपने स्रोतों को जोड़ना सुनिश्चित करें PYTHONPATH:

यहां छवि विवरण दर्ज करें

  • अब आयातों को हल किया जाएगा:

                      यहां छवि विवरण दर्ज करें

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

                                  यहां छवि विवरण दर्ज करें

इस सब के बाद पुनः आरंभ करने के लिए मत भूलना। PyCharm मेनू में: फ़ाइल -> अमान्य कैश / पुनरारंभ करें


16
यह भी काम करता है यदि आप IntelliJ के साथ पायथन प्लगइन का उपयोग कर रहे हैं।
0

13
यह समाधान काम करता है। इसकी समस्या यह है कि जब कोई अन्य प्रोग्रामर svn से कोड प्राप्त करता है, तो उसे "अनसुलझे संदर्भ" त्रुटि प्रॉम्प्ट से छुटकारा पाने के लिए फिर से वही सेटिंग करनी होती है।
बेन लिन

2
@ GameBrainiac, समाधान यह है कि IDE "sys.path.insert (0," ./src ")" "को इस विशिष्ट फ़ाइल के लिए PYTHONPATH में जोड़ सकता है, फिर उचित सिंटैक्स विश्लेषण दें।
बेन लिन

2
आपको यह भी सुनिश्चित करने की आवश्यकता है कि आपकी सामग्री रूट पथ सही है। Pycharm 5 में आप इसे वरीयताएँ -> परियोजना -> परियोजना संरचना में पा सकते हैं।
lps

1
अजीब बात है, उप-निर्देशिकाओं पर ध्यान नहीं दिया जाता है। उदाहरण के लिए, अगर नीचे src, हमारे पास viewsफ़ोल्डर है जिसमें मेरे पास है myview.py, मुझे अभी भी कोशिश करते समय अनसुलझे संदर्भ त्रुटि प्राप्त होती है from src.views.myview import <my_function>...
सेक्सीबीस्ट

49
  1. फ़ोल्डर __init__.pyमें फ़ाइल के लिए जाँच करेंsrc
  2. srcस्रोत रूट के रूप में फ़ोल्डर जोड़ें
  3. फिर अपने लिए स्रोत जोड़ना सुनिश्चित करें PYTHONPATH(ऊपर देखें)
  4. PyCharm मेनू में चुनें: फ़ाइल -> अमान्य कैश / पुनरारंभ करें

11
यह बहुत अंतिम चरण मेरे समाधान में केवल एक चीज गायब थी। स्वीकृत उत्तर इसे इसमें जोड़ सकता है।
निंबेर

यहां बताए गए अंतिम चरण के बिना, स्वीकृत उत्तर काम नहीं कर रहा है। स्वीकृत उत्तर को इस चरण के साथ /
santhosh kumar

23

अगर कोई अभी भी इसे देख रहा है, तो स्वीकृत उत्तर अभी भी PyCharm 2016.3 के लिए काम करता है जब मैंने इसे आज़माया। यूआई भले ही बदल गया हो, लेकिन विकल्प अभी भी वही हैं।

अर्थात। अपने रूट फ़ोल्डर पर राइट क्लिक करें -> 'मार्क डायरेक्टरी अस' -> सोर्स रूट


1
इस चर्चा में इतने जटिल जवाब। यहां प्रस्तुत समाधान ने मेरे लिए इतनी आसानी से काम किया।

16

सभी वर्कअराउंड का परीक्षण करने के बाद, मैं आपको सुझाव देता हूं कि आप उन पर एक नज़र डालें Settings -> Project -> project dependenciesऔर उन्हें फिर से व्यवस्थित करें।

pycharm पूर्वगामी


यह मेरे लिए पूरी तरह से काम करता है। मैंने pygameवहां स्थापित किया है और अधिक अनसुलझे संदर्भ मुद्दा नहीं है!
मीकल प्रिज़ेब्लोइकज़


5

आम तौर पर, यह एक लापता पैकेज समस्या है, बस अनसुलझे संदर्भ पर कैरेट रखें और Alt+Enterविकल्पों को प्रकट करने के लिए दबाएं , फिर आपको पता होना चाहिए कि इसे कैसे हल किया जाए।


4

स्वीकृत उत्तर का पालन करने के बाद, निम्नलिखित ने इसे मेरे लिए हल किया:

FileSettingsProject <your directory/project>Project Dependencies

उस निर्देशिका / परियोजना को चुन लें जहां आपकी फ़ाइल जिसमें अनसुलझे आयात रहते हैं और बॉक्स को चेक करने के लिए बताएं कि Pycharm यह बताता है कि वह परियोजना आपके अन्य प्रोजेक्ट पर निर्भर करती है।

मेरा फ़ोल्डर पदानुक्रम प्रश्न में एक से थोड़ा अलग है। मेरा ऐसा है

├── MyDirectory  
     └── simulate.py  
├── src  
     ├── networkAlgorithm.py  
     ├── ...

Pycharm को बताना कि src MyDirectoryमेरे लिए समस्या को हल करने पर निर्भर करता है!


4

यद्यपि सभी उत्तर वास्तव में मददगार हैं, लेकिन जानकारी का एक छोटा टुकड़ा है जिसे स्पष्ट रूप से समझाया जाना चाहिए:

  • मूलतः, कई पदानुक्रमित निर्देशिकाओं वाली एक परियोजना कुछ विशेषताओं के साथ एक पैकेज के रूप में काम करती है।
  • कस्टम स्थानीय बनाई गई कक्षाओं को आयात करने के लिए, हमें .pyफ़ाइल वाली निर्देशिका में नेविगेट करना होगा और __init__.pyवहां एक (खाली) फ़ाइल बनानी होगी ।

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


3

PyCharm (सामुदायिक संस्करण के साथ काम करता है) के माध्यम से स्थापित करें। ओपन Settings > Project > Project Interpreterकरें फिर नीचे स्क्रीनशॉट में ग्रीन + आइकन पर क्लिक करें। खुलने वाले 2 संवाद में, पैकेज नाम दर्ज करें और 'इंस्टॉल पैकेज' बटन पर क्लिक करें।

यहां छवि विवरण दर्ज करें


2

कई बार ऐसा होता है कि प्लगइन स्थापित नहीं होता है। जैसे

यदि आप एक django प्रोजेक्ट विकसित कर रहे हैं और आपके पास pjCharm में django plugin इंस्टॉल नहीं है, तो यह एरर 'अनसुलझे संदर्भ' कहती है। देखें: https://www.jetbrains.com/pycharm/help/resolve-references.html


इस + स्वीकृत उत्तर ( stackoverflow.com/a/21241988/6448384 ) को मिलाना था
करुहांगा

1

कृपया जांचें कि क्या आप सही दुभाषिया का उपयोग कर रहे हैं जिसे आप करने वाले हैं। मुझे प्रोजेक्ट सेटिंग्स से प्रोजेक्ट इंटरप्रेटर (परिवर्तित पायथन 3 से अजगर 2.7) में इसे हल करने के लिए "अनसुलझे संदर्भ 'django'" त्रुटि हो रही थी: प्रोजेक्ट सेटिंग्स का चयन करें, फाइल पर जाएं -> सेटिंग्स -> प्रोजेक्ट: -> प्रोजेक्ट इंटरपेंटर -> ब्राउज और सही संस्करण या दुभाषिया (जैसे /usr/bin/python2.7) का चयन करें।


1

मेरे मामले में समस्या यह थी कि मैं उपयोग कर रहा था Virtual environmentजिसकी वैश्विक साइट-संकुल तक पहुँच नहीं थी। इस प्रकार, दुभाषिया को नए स्थापित पैकेजों की जानकारी नहीं थी।

समस्या को हल करने के लिए, बस अपने वर्चुअल दुभाषिए को संपादित या फिर से बनाएँ और Inherit global site-packagesविकल्प पर टिक करें ।

यहां छवि विवरण दर्ज करें


क्या यह अवांछनीय परिणाम है और एक आभासी वातावरण का उपयोग करने का एक कारण है? यही है, यदि आप उस वातावरण को कहीं ले जाते हैं और उन वैश्विक साइट-पैकेज स्थापित होते हैं, तो आप मुश्किल में हैं। बिल्कुल यही मैने सोचा।
TheStud54


0

PyCharm 2019.3.1 में किया गया - अपने src फोल्डर पर राइट क्लिक करें -> "मार्क डायरेक्टरी as" -> क्लिक-ऑन "एक्सक्लूड" और आपका src फोल्डर नीला होना चाहिए।


-1

Pycharm venv का उपयोग करता है। वेनव के कंसोल में आपको संकुल को स्पष्ट रूप से स्थापित करना चाहिए या अंदर जाना चाहिए settings -> project interpreter -> add interpreter -> inherit global site-packages


-1

Pycharm के नए संस्करणों में आप डायरेक्ट्री या अजगर पैकेज पर राइट क्लिक करके कर सकते हैं जिसमें से आप किसी फ़ाइल को आयात करना चाहते हैं, फिर 'Mark Directory As' -> 'Sources Root' पर क्लिक करें।


-1

इसे ठीक करने का सबसे आसान तरीका है अपने pyCharm सॉफ़्टवेयर में निम्न कार्य करना:

पर क्लिक करें: फ़ाइल> सेटिंग्स> (परियोजना: आपकी परियोजना का नाम)> परियोजना व्याख्याकार>

इसके बाद दाईं ओर "+" आइकन पर क्लिक करें जिसे आप चाहते हैं और इसे स्थापित करने के लिए पैकेज की खोज करें।

कोडिंग का आनंद लें !!!


1
ढेर अतिप्रवाह में आपका स्वागत है, और आपके उत्तर के लिए धन्यवाद। जब तक यह सही हो सकता है, भविष्य में कृपया संदर्भ या आगे के विवरण के बिना अन्य साइटों पर चित्र या लिंक पोस्ट करने से बचें। लिंक कुछ बिंदु पर काम करना बंद कर सकता है, जिससे यह उत्तर अन्य उपयोगकर्ताओं के लिए कम उपयोगी होगा।
साइबरजैकब

@CyberJacob बहुत बहुत धन्यवाद, और आपकी सलाह के लिए बहुत बहुत धन्यवाद, मैंने छवि को हटाकर इसके बजाय पाठ जोड़कर उत्तर संपादित किया है।
zaid.mohammed
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.