Onopgelost referentieprobleem in PyCharm

Ik heb een mappenstructuur

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

En ik heb toegang tot de netwerkmodule met sys.path.insert().

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

Pycharm klaagt echter dat het geen toegang heeft tot de module. Hoe kan ik pycham leren de verwijzing op te lossen?


Antwoord 1, autoriteit 100%

Handmatig toevoegen zoals je hebt gedaan isinderdaad een manier om dit te doen, maar er is een eenvoudigere methode, en dat is door pycharm simpelweg te vertellen dat je de srcmap als bron root, en voeg dan de bron root toe aan je python pad.

Op deze manier hoeft u dingen niet hard te coderen in de instellingen van uw tolk:

  • Voeg srctoe als een broninhoud root:

                       ;   

  • Zorg er dan voor dat u bronnen toevoegt aan uw PYTHONPATHonder:

    Preferences ~ Build, Execution, Deployment ~ Console ~ Python Console
    

  • Invoer wordt nu opgelost:

                       

Op deze manier kun je alles toevoegen wat je wilt als bronroot, en alles werkt gewoon. Als u de markering als bronroot echter uitschakelt, krijgt u eenfoutmelding:

                       ;         

Vergeet na dit alles niet opnieuw op te starten. Selecteer in het PyCharm-menu: Bestand –> Caches ongeldig maken / opnieuw opstarten


Antwoord 2, autoriteit 6%

  1. controleer het bestand __init__.pyin de map src
  2. voeg de map srctoe als bronbron
  3. Zorg er dan voor dat u bronnen toevoegt aan uw PYTHONPATH(zie hierboven)
  4. selecteer in het PyCharm-menu: Bestand –> Caches ongeldig maken / opnieuw opstarten

Antwoord 3, autoriteit 3%

Als iemand hier nog steeds naar kijkt, werkte het geaccepteerde antwoord nog steeds voor PyCharm 2016.3 toen ik het probeerde. De gebruikersinterface is misschien veranderd, maar de opties zijn nog steeds hetzelfde.

dwz. Klik met de rechtermuisknop op uw hoofdmap –> ‘Markeer map als’ –> Bron root


Antwoord 4, autoriteit 2%

Na het testen van alle tijdelijke oplossingen, raad ik u aan een kijkje te nemen bij Settings -> Project -> project dependenciesen herschik ze.


Antwoord 5, autoriteit 2%

Normaal gesproken wordt $PYTHONPATH gebruikt om de Python-interpreter te leren de benodigde modules te vinden. PyCharm moet het pad toevoegen in Voorkeur.


Antwoord 6

Over het algemeen is dit een probleem met een ontbrekend pakket, plaats het caret bij de onopgeloste verwijzing en druk op Alt+Enterom de opties weer te geven, dan zou je moeten weten hoe je het kunt oplossen.


Antwoord 7

Installeer via PyCharm (werkt met Community Edition). Open Settings > Project > Project Interpreterklik vervolgens op het groene + icoon in de onderstaande schermafbeelding. Voer in het tweede dialoogvenster dat wordt geopend de pakketnaam in en klik op de knop ‘Pakket installeren’.


Antwoord 8

Na het geaccepteerde antwoord te hebben gevolgd, loste het volgende het voor mij op:

FileSettingsProject <your directory/project>Project Dependencies

Kies de map/het project waar uw bestand met onopgeloste importen zich bevindt en vink het vakje aan om Pycharm te laten weten dat dat project afhankelijk is van uw andere project.

Mijn mappenhiërarchie wijkt iets af van die in de vraag. De mijne is zo

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

Pycharm vertellen dat src afhangt van MyDirectoryloste het probleem voor mij op!


Antwoord 9

Hoewel alle antwoorden erg nuttig zijn, is er een klein stukje informatie dat expliciet moet worden uitgelegd:

  • In wezen werkt een project met meerdere hiërarchische mappen als een pakket met enkele attributen.
  • Om aangepaste lokaal gemaakte klassen te importeren, moeten we naar de map met het bestand .pynavigeren en daar een __init__.py(leeg) bestand maken.

Waarom dit helpt is omdat dit bestand nodig is om Python de map te laten behandelen als pakketten. Proost!


Antwoord 10

Vaak gebeurt het dat de plug-in niet is geïnstalleerd. bijv.

Als je een django-project aan het ontwikkelen bent en je hebt geen django-plug-in geïnstalleerd in pyCharm, dan staat er fout ‘unresolved reference’.
Verwijzen:
https://www.jetbrains.com/pycharm/help/resolving-references.html


Antwoord 11

Dit werkte voor mij: Top Menu -> File -> Invalidate Caches/Restart


Antwoord 12

  1. –> Klik met de rechtermuisknop op de map waar uw bestanden zich bevinden in PyCharm
  2. Ga naar de –> Markeer map als
  3. Selecteer de –> Bron root

uw probleem zal worden opgelost


Antwoord 13

Controleer a.u.b. of u de juiste tolk gebruikt. Ik kreeg de foutmelding “onopgeloste referentie ‘django’ ” om dit op te lossen. Ik heb Project Interpreter (Python 3 gewijzigd in Python 2.7) van de projectinstellingen gewijzigd:
Selecteer Project, ga naar Bestand -> Instellingen -> Project: -> Projecttolk -> Bladeren en selecteer de juiste versie of tolk (bijv. /usr/bin/python2.7).


Antwoord 14

In mijn geval was het probleem dat ik een Virtual environmentgebruikte die geen toegang had tot globale site-pakketten. De interpreter was dus niet op de hoogte van de nieuw geïnstalleerde pakketten.

Om het probleem op te lossen, hoeft u alleen maar uw virtuele tolk te bewerken of opnieuw te maken en de optie Inherit global site-packagesaan te vinken.


Antwoord 15

Gereed in PyCharm 2019.3.1
Klik met de rechtermuisknop op uw src-map -> “Markeer map als” -> Klik op “Uitgesloten”en je src-map zou blauw moeten zijn.


Antwoord 16

Ik gebruikte ook een virtuele omgeving zoals Dan hierboven, maar ik kon een interpreter toevoegen aan de bestaande omgeving, waardoor ik geen globale sitepakketten hoefde over te nemen en daarom ongedaan maakte wat een virtuele omgeving probeert te bereiken.

>


Antwoord 17

Voor mij werkt het toevoegen van virtualenv (venv)’s site-packages pad aan de paden van de interpreter.
Eindelijk!


Antwoord 18

Ik heb hier alles twee keer geprobeerd en zelfs meer. Ik heb het eindelijk opgelost door iets te doen dat ik nergens online had gezien. Als je naar Settings>Editor>File Typesgaat, staat er onderaan een regel 'Ignore Files and folders‘. In mijn geval negeerde ik 'venv', wat ik altijd mijn virtuele omgevingen noem. Dus heb ik venv;verwijderd uit de lijst met te negeren mappen en VOILA!! Ik heb dit probleem EINDELIJK kunnen oplossen. Letterlijk al mijn importproblemen zijn opgelost voor het project.

Trouwens, ik had elk pakket geïnstalleerd met PyCharm en niet via een terminal. (Dat wil zeggen, door naar Settings>Interpreter...te gaan). Ik had de cache ongeldig gemaakt, ‘Source Root’ gewijzigd, PyCharm opnieuw gestart, mijn tolkenpaden vernieuwd, tolken gewijzigd, mijn venv verwijderd… Ik heb alles geprobeerd. Dit is uiteindelijk gelukt. Het is duidelijk dat er hier meerdere problemen zijn met verschillende mensen, dus dit werkt misschien niet voor jou, maar het is zeker het proberen waard als niets anders heeft gewerkt, en gemakkelijk ongedaan te maken als het niet werkt.


Antwoord 19

Voor mijn geval:

Directory0
    ├── Directory1
    │     └── file1.py  
    ├── Directory2
    │     ├── file2.py  

In bestand1 heb ik:

from Directory2 import file2

die een “onopgeloste referentie Directory2” plaatst.

Ik heb het opgelost door:

  • het markeren van de bovenliggende directory Directory0 als “Source Root” zoals hierboven vermeld

EN

  • mijn cursor op een andere regel plaatsen in het bestand waar ik de fout had, zodat er rekening wordt gehouden met mijn wijziging

Het is dwaas, maar als ik de tweede actie niet doe, verschijnt de fout nog steeds en kan je denken dat je het probleem niet hebt opgelost door de bovenliggende map te markeren als bronroot.


Antwoord 20

Er zijn verschillende redenen waarom dit kan gebeuren. Hieronder staan verschillende stappen die de meeste van deze gevallen oplossen:

.probleem met cachen van ideeën

Een probleem met .ideawaardoor de IDE een fout vertoont terwijl de code nog steeds correct wordt uitgevoerd. Oplossing:

  1. Sluit het project en snel PyCharm
  2. verwijder de map .ideawaar het project zich bevindt. merk op dat het een verborgen map is en dat u zich misschien niet bewust bent van het bestaan ervan in uw projectdirectory.
  3. start PyCharm en maak het project opnieuw

importeert relatief niet naar projectmap

Relatieve importen terwijl de hoofdmap van de code niet hetzelfde is als de projectmap. Oplossing:

  1. Zoek de map die relatieve import nodig heeft in de projectverkenner
  2. klik met de rechtermuisknop en markeer het als “Bronwortel”

Bewerker markeert init.py niet als Python maar als Tekst

Dat is de meest illusoire van alle gevallen. Hier beschouwt PyCharm om de een of andere reden alle __init__.py-bestanden als geen python-bestanden en negeert ze dus tijdens code-analyse. Om dit op te lossen:

  1. PyCharm-instellingen openen
  2. Navigeer naar Editor -> Bestandstypen
  3. Zoek Python en voeg __init__.pytoe aan de lijst met python-bestanden

of

  1. Zoek tekst en verwijder __init__.pyuit de lijst met tekstbestanden

Antwoord 21

Pycharm gebruikt venv. In de venv-console moet u de pakketten expliciet installeren of in settings -> project interpreter -> add interpreter -> inherit global site-packages.


Antwoord 22

De eenvoudigste manier om het op te lossen is door het volgende te doen in uw pyCharm-software:

Klik op: Bestand > Instellingen > (Project: uw projectnaam) > Projecttolk >

klik vervolgens op het “+”-pictogram aan de rechterkant om het gewenste pakket te zoeken en te installeren.

Veel plezier met coderen !!!


Antwoord 23

In nieuwere versies van Pycharm kunt u eenvoudigweg klikken op het klikken op de map of het Python-pakket waarvan u een bestand wilt importeren en klik vervolgens op ‘Mark Directory als’ – & GT; ‘Bronnen root’

Other episodes