PyCharm mostra un errore di riferimento non risolto per il codice valido


279

Sto usando PyCharm per lavorare su un progetto. Il progetto viene aperto e configurato con un interprete e può essere eseguito correttamente. I percorsi dell'interprete remoto sono mappati correttamente. Questa sembra essere la configurazione corretta, ma PyCharm sta evidenziando il mio codice valido con errori di "riferimento non risolto", anche per le funzioni Python integrate. Perché questi non sembrano essere rilevati, anche se il codice viene eseguito? Esiste un modo per convincere PyCharm a riconoscerli correttamente?


Questa specifica istanza del problema riguarda un interprete remoto, ma il problema appare anche sugli interpreti locali.


Ho lo stesso problema e l'ho sostituito. Ecco la soluzione .
Fa il

Risposte:


445

File | Cache non valide ... e riavviare PyCharm aiuta.


3
Questo è l'unico modo di lavorare su PyCharm 4.0.x nel mio caso. Il fatto è che se qualcosa è stato rovinato e non si aggiorna (a volte mostra anche lo stesso interprete ripetuto più volte nell'elenco) dovrai eliminare i file manualmente ... Ho anche dovuto rimuovere le cartelle .idea una volta .
danius

10
Questo è così pesante. Non c'è modo di riavere la vecchia opzione "percorso di aggiornamento" in PyCharm 4.5?
Chris Withers,

6
È davvero fastidioso che un tale IDE non si occupi di un'operazione così semplice.
Eduardo Pignatelli,

3
Funziona momentaneamente. Dopo pochi minuti ricevo di nuovo lo stesso avvertimento
Aseem,

La risposta accettata è pesante e molto probabilmente non affronta il nocciolo del problema. Ecco le informazioni direttamente dalla bocca dei cavalli: JetBrains - Radice dei contenuti di PyCharm "PyCharm utilizza le origini dei sorgenti come punto di partenza per la risoluzione delle importazioni" Ho riscontrato il problema esattamente come nel titolo perché in alcuni progetti ho bisogno di utilizzare un albero di file in cui le fonti si trovano in una sottocartella, PyCharm viene quindi confuso sulle importazioni. L'uccisione della cache potrebbe essere utile per un momento, ma non è l'approccio giusto. Segna la directory dei sorgenti come root e tutto va bene.
predmod

133

La risposta di Dmitry non ha funzionato per me.

Ho fatto funzionare il mio andando su Project Interpreters, selezionando la scheda "Percorsi" e premendo il pulsante di aggiornamento in quel sottomenu. Si è auto-popolato con qualcosa chiamato "scheletri di pitone".

modifica : screenshot usando PyCharm 3.4.1 (è abbastanza ben nascosto)

inserisci qui la descrizione dell'immagine


6
Dov'è "Python Interpreters". Intendi "interpreti di progetto"? Sto usando Linux e non sono riuscito a trovare nemmeno la scheda Percorsi.
Baskaya,

1
In PyCharm 3.4 su OSX, è un'icona che sembra un piccolo albero di cartelle e non dice "Percorsi".
Daniel Bushman,

12
Per chiunque sia ancora confuso (in PyCharm 3.4.1):Settings > Project Settings > Project Interpreter > Project Interpreters (gear button > more) > --Select the interpreter-- > Interpreter Paths (Directory Tree button on the right) > Reload List of Paths (Blue refresh-like button)
raphaeltm,

5
Non esiste un pulsante di aggiornamento in PyCharm 4, solo i segni più e meno.
Dtheodor,

3
@Sarah In PyCharm 4.0.4, nella finestra "Percorsi interprete", non ho il pulsante "Ricarica elenco percorsi" (icona di aggiornamento blu in basso). Inoltre, non vedo alcun percorso nell'elenco e i pulsanti più e meno sono disabilitati.
Henrik Heimbuerger,

70

Esistono molte soluzioni, alcune più convenienti di altre e non sempre funzionano.

Ecco tutto quello che puoi provare, passando da 'veloce' a 'fastidioso':

  • Do File-> Invalidate Caches / Restarte riavviare PyCharm.
    • Puoi anche farlo dopo uno dei metodi seguenti, per essere sicuro.
  • Innanzitutto, controlla quale interprete stai eseguendo: Run-> Edit Configurations-> Configuration-> Python Interpreter.
  • Aggiorna i percorsi del tuo interprete:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> "Interprete del progetto": icona a forma di ingranaggio ->More...
    • Fai clic sul pulsante "Mostra percorsi" (in basso)
    • Fai clic sul pulsante "Aggiorna" (in basso)
  • Rimuovere l'interprete e aggiungerlo di nuovo:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> "Interprete del progetto": icona a forma di ingranaggio ->More...
    • Fai clic sul pulsante "Rimuovi"
    • Fai clic sul pulsante "Aggiungi" e aggiungi nuovamente il tuo interprete
  • Elimina le tue preferenze di progetto
    • Elimina la .ideacartella del tuo progetto
    • Chiudi e riapri PyCharm
    • Apri il tuo progetto da zero
  • Elimina le tue preferenze utente PyCharm (ma prima esegui il backup).
    • ~/.PyCharm50 su Mac
    • %homepath%/.PyCharm50 Su Windows
  • Passa a un altro interprete, quindi torna di nuovo a quello che desideri.
  • Crea un nuovo ambiente virtuale e passa all'interprete di quegli ambienti.
  • Passa a un altro interprete del tutto, non tornare indietro.

Ho avuto questo problema da quando uso PyCharm e non riescono ancora a risolverlo in modo affidabile. Meno male che hai trattato la maggior parte del lavoro in un modo o nell'altro alla fine risolvendo il problema. Divertente come torno a questa risposta di tanto in tanto per capire quale soluzione ho dimenticato di provare.
Alex,

3
Mi sono spostato in fondo a questo elenco e rimuovere / aggiungere nuovamente l'interprete ha funzionato per me. Grazie!
Segna il

16

Nel mio caso era la struttura delle directory. Il mio progetto è simile al seguente:

+---dir_A
    +---dir_B
        +app
        |
        \-run.py

Quindi fai clic destro su dir_b> "contrassegna directory come"> "radice progetto"


2
La domanda non era che PyCharm non riconosce il codice del progetto . Non riconosce i metodi integrati standard di Python.
Florisla,

Risolto il mio problema su PyCharm 2019.3.3 su MacOS
samisnotinsane,

11

Mi ritrovo a rimuovere e aggiungere nuovamente l'interprete remoto per risolvere questo problema quando Cache non valide o Percorsi di aggiornamento non funzionano.

Uso Vagrant e ogni tanto se aggiungo una nuova VM alla mia configurazione multi-vm, la porta inoltrata cambia e questo sembra confondere PyCharm quando tenta di usare la porta sbagliata per SSH. La modifica della porta non sembra aiutare i riferimenti non funzionanti.


10

Se nessuna delle altre soluzioni funziona per te, prova (backup) ed elimina la cartella ~ / .PyCharm40, quindi riapri PyCharm. Questo ucciderà anche tutte le tue preferenze.

Su Mac si desidera eliminare ~ / Library / Caches / Pycharm40 e ~ / Library / Preferences / PyCharm40.

E su Windows: C: \ Users \ $ USER.PyCharm40.


10

Testato con PyCharm 4.0.6 (OSX 10.10.3) seguendo questi passaggi:

  1. Fai clic sul menu PyCharm.
  2. Seleziona Interprete del progetto.
  3. Seleziona l'icona a forma di ingranaggio.
  4. Seleziona il pulsante Altro.
  5. Seleziona il Project Interpreter in cui ti trovi.
  6. Seleziona il pulsante Albero delle directory.
  7. Seleziona Ricarica elenco di percorsi.

Problema risolto!


10

molto facile

devi solo contrassegnare la tua directory principale come: SOURCE ROOT (rosso) e le tue applicazioni: EXCLUDED ROOT (blu),

quindi il riferimento non risolto scomparirà.

  • inserisci qui la descrizione dell'immaginese usi PyChram pro, fallo automaticamente per te.

5
Ho pycharm pro e non lo ha fatto per me, ma dopo aver contrassegnato manualmente le cartelle correttamente ha funzionato
Jose

Sì, questa è la risposta giusta e non qualche opzione nucleare in cui l'effetto collaterale aiuta per un momento, ma non affronta il modo in cui la strumentazione jetbrains pensa ("uccidi la cache", giusto ... e quando viene ricostruita? "Uccidila di nuovo ! "). Il titolo, che era esattamente un problema nei miei progetti, in cui la radice del progetto non è necessariamente la radice delle fonti e le importazioni non riescono a capirlo. Ecco le informazioni direttamente dalla bocca dei cavalli jetbrains.com/help/pycharm/content-root.html "PyCharm utilizza le origini di origine come punto di partenza per la risoluzione delle importazioni"!
predmod

6

Mi dispiace rispondere a questa domanda, tuttavia ho un aggiornamento importante da apportare.

Puoi anche ripristinare il tuo interprete di progetto in Python 2.7.6 se stai utilizzando una versione diversa da quella. Questo ha funzionato per me sulla mia installazione Ubuntu di PyCharm 4.04 professionale dopo che nessuna delle altre raccomandazioni ha risolto il mio problema.


1
Il passaggio all'interprete Python 2 locale e poi di nuovo all'interprete Python 3 remoto ha risolto questo problema anche per me.
James Fletcher,

Funziona anche su PyCharm 5 Professional. Nessuna delle altre soluzioni in questo post ha funzionato per me. Sono entrato Settings -> "Project Interpreters", ho cliccato sulla marcia e poi "More...". Scegli l'interprete predefinito di Python ( /usr/bin/python2.7nel mio caso), premi "Ok"e "Apply". Quindi sono tornato indietro e ho scelto il virtualenv reale che volevo usare. "Ok"e "Apply"ancora, ed è stato risolto.
Josh,

Allo stesso modo FileNotFoundErrorè una cosa solo per Python-3. Dopo aver impostato l'interprete corretto in File-Settings-Project-Interpreter e Run-Edit-Configurations, uno di quelli ha fatto sparire l'errore.
Bob Stein,

3

Potresti provare a chiudere Pycharm, eliminare la .ideacartella dal tuo progetto, quindi riavviare Pycharm e ricreare il progetto. Questo ha funzionato per me, mentre la cache invalidante no.


2

Finalmente ho funzionato dopo che nessuna delle soluzioni proposte ha funzionato per me. Stavo giocando con un progetto quadro di riposo django e stavo usando un virtualenv che avevo installato con esso. Sono stato in grado di far riparare Pycharm contrassegnando la cartella radice come radice dei sorgenti, ma poi il server di django avrebbe generato eccezioni risolutive. Quindi uno funzionerebbe quando l'altro no e viceversa.

Alla fine ho dovuto solo contrassegnare la sottocartella come radice di Pycharm. Quindi la mia struttura era così

-playground
     -env
     -playground

La cartella del secondo parco giochi è quella che ho dovuto contrassegnare come radice dei sorgenti affinché tutto funzioni come previsto. Ciò non presentava alcun problema per il mio scenario, quindi era una soluzione praticabile.

Ho pensato di condividere nel caso in cui qualcun altro potesse usarlo.


2

Potrebbe anche essere un problema di versione di Python. Ho dovuto scegliere quello giusto per farlo funzionare. inserisci qui la descrizione dell'immagine


2

Se vuoi ignorare solo alcuni errori di "riferimento non risolto", puoi anche dirlo esplicitamente a PyCharm ponendolo davanti alla tua classe / metodo / funzione:

# noinspection PyUnresolvedReferences

1

Ho chiuso tutti gli altri progetti ed eseguito il progetto richiesto in isolamento a Pycharm. Ho creato un virtualenv separato da pycharm e ho aggiunto tutti i moduli richiesti usando pip. Ho aggiunto questo ambiente virtuale nell'interprete del progetto. Questo ha risolto il mio problema.


1

Accidenti, che incubo, la mia fusione di diversi StackOVerflow risponde:

  1. Passare all'interprete locale /usr/bin/pythonX.X e applicare
  2. Visualizza percorsi come sopra la risposta
  3. Trova il percorso degli scheletri. Il mio era (/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  4. Torna all'interprete virt e aggiungi manualmente il percorso degli scheletri se non viene visualizzato automaticamente.

1

Nessuna delle soluzioni sopra ha funzionato per me!
Se stai usando un ambiente virtuale per il tuo progetto assicurati di applicare il python.exefile che si trova nella tua directory di ambiente virtuale come interprete per il progetto, (Alt + Ctrl + Shift + S) questo ha risolto il problema per me.


1

Nel mio caso l'errore di ispezione si presenta a causa di un caso molto specifico di codice Python. Una funzione min che contiene due funzioni intorpidite e due accessi all'elenco fa sì che la mia ispezione del codice dia questo tipo di errori.

La rimozione della riga 'd = 0' nell'esempio seguente genera un errore di riferimento non risolto come previsto, ma la lettura non fa scomparire l'errore per la finestra di ispezione del codice. Posso ancora eseguire il codice senza problemi in seguito.

import numpy as np
def strange(S, T, U, V):
    d = 0
    print min(np.abs(S[d]), np.abs(T[d]), U[d], V[d])

Cancellare le cache e ricaricare l'elenco dei percorsi non funziona. La modifica del codice solo con una delle seguenti patch di esempio funziona:

  • Un altro ordinamento dei parametri 'min': schematicamente SUTV ma non STUV o TSUV
  • Utilizzo di un metodo anziché della funzione: S [d] .abs () anziché np.abs (S [d])
  • Uso della funzione abs () integrata
  • Aggiunta di un numero a un parametro di scelta: U [d] + 0.

1

Nessuna delle risposte ha risolto il mio problema.

Quello che ha fatto per me è stato cambiare ambiente e tornare allo stesso ambiente. File->Settings->Project interpreter

Sto usando ambienti conda.


1

Ha funzionato per me con un'azione molto più semplice :


File > Settings > Project > Project Interpreter 
> Select "No interpreter" in the "Project interpreter" list 
> Apply > Set your python interpreter again > Click Apply

Profitto - Pycharm sta aggiornando gli scheletri e tutto va bene.


0

Se stai usando vagrantl'errore può essere causato da un interprete python errato. Nel nostro vagrantstiamo usando pyenvquindi ho dovuto cambiare Python Interpreter pathpercorso da /usr/bin/pythona/home/vagrant/.pyenv/versions/vagrant/bin/python inserisci qui la descrizione dell'immagine


0

Ho un progetto in cui un file in src/importa un altro file nella stessa directory. Per far riconoscere PyCharm ho dovuto andare su File> Impostazioni> Progetto> Struttura del progetto> selezionare la srccartella e fare clic su "Segna come: Fonti"

Da https://www.jetbrains.com/help/pycharm/configuring-folders-within-a-content-root.html

Le radici di origine contengono i file e le risorse di origine reali. PyCharm utilizza le origini radice come punto di partenza per la risoluzione delle importazioni


0

Il mio problema è che Flask-WTF non è stato risolto da PyCharm . Ho provato a reinstallare, quindi installare o Invalidate Cache e Riavvia PyCharm, ma non funziona ancora.

Poi ho trovato questa soluzione e funziona perfettamente per me.

  1. Apri Project Interpreter con Ctrl + Alt + S (Windows), quindi fai clic su Installa (+) un nuovo pacchetto.

inserisci qui la descrizione dell'immagine

  1. Digitare il pacchetto che non è stato risolto da PyCharm e quindi fare clic su Installa pacchetto . Quindi fare clic su OK .

inserisci qui la descrizione dell'immagine

Ora vedrai che la tua libreria è stata risolta.


-1

Stai usando virtualenv?

in tal caso, è necessario informare PyCharm per ogni modifica nella posizione del python.exe desiderato (semplicemente ./activate non è sufficiente per PyCharm)

Assicurati che Pycharm indichi l'interpetore e i pacchetti corretti: File -> Impostazioni -> Progetto -> Interprete del progetto. Fai clic sull'ingranaggio e scegli python.exe nella cartella Script di virtualenv

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.