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 src
map 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
src
toe als een broninhoud root:
;
-
Zorg er dan voor dat u bronnen toevoegt aan uw
PYTHONPATH
onder: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%
- controleer het bestand
__init__.py
in de mapsrc
- voeg de map
src
toe als bronbron - Zorg er dan voor dat u bronnen toevoegt aan uw
PYTHONPATH
(zie hierboven) - 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 dependencies
en 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+Enter
om 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 Interpreter
klik 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:
File
→ Settings
→ Project <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 MyDirectory
loste 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
.py
navigeren 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
- –> Klik met de rechtermuisknop op de map waar uw bestanden zich bevinden in PyCharm
- Ga naar de –> Markeer map als
- 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 environment
gebruikte 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-packages
aan 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 Types
gaat, 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 .idea
waardoor de IDE een fout vertoont terwijl de code nog steeds correct wordt uitgevoerd. Oplossing:
- Sluit het project en snel PyCharm
- verwijder de map
.idea
waar 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. - 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:
- Zoek de map die relatieve import nodig heeft in de projectverkenner
- 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:
- PyCharm-instellingen openen
- Navigeer naar Editor -> Bestandstypen
- Zoek Python en voeg
__init__.py
toe aan de lijst met python-bestanden
of
- Zoek tekst en verwijder
__init__.py
uit 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’