PyCharm affiche une erreur de références non résolues pour un code valide

279

J'utilise PyCharm pour travailler sur un projet. Le projet est ouvert et configuré avec un interprète et peut s'exécuter avec succès. Les chemins d'interpréteur distant sont correctement mappés. Cela semble être la configuration correcte, mais PyCharm met en évidence mon code valide avec des erreurs de "référence non résolue", même pour les fonctions Python intégrées. Pourquoi ne semblent-ils pas être détectés, même si le code s'exécute? Existe-t-il un moyen pour que PyCharm les reconnaisse correctement?


Cette instance spécifique du problème est avec un interpréteur distant, mais le problème apparaît également sur les interprètes locaux.

James McCalden
la source
J'ai le même problème et je l'ai résolu. Voici la solution .
Maks

Réponses:

445

Fichier | Invalider les caches ... et redémarrer PyCharm aide.

Dmitry Trofimov
la source
3
C'est la seule façon de travailler sur PyCharm 4.0.x dans mon cas. Le fait est que si quelque chose s'est gâché et qu'il ne se rafraîchit pas (parfois il montre même le même interprète répété plusieurs fois dans la liste), vous devrez supprimer les fichiers manuellement ... J'ai même dû supprimer une fois les dossiers .idea .
danius
10
C'est tellement lourd. N'y a-t-il aucun moyen de récupérer l'ancienne option "Actualiser le chemin" dans PyCharm 4.5?
Chris Withers
6
C'est vraiment ennuyeux qu'un tel IDE ne s'occupe pas d'une opération aussi simple.
Eduardo Pignatelli
3
Cela fonctionne momentanément. Après quelques minutes, je reçois à nouveau le même avertissement
Aseem
La réponse acceptée est lourde et ne résout probablement pas le nœud du problème. Voici les informations directement de la bouche des chevaux: JetBrains - PyCharm Content Root "PyCharm utilise les racines sources comme point de départ pour résoudre les importations" J'ai eu le problème exactement comme dans le titre car dans certains projets, j'ai besoin d'utiliser une arborescence de fichiers où les sources sont dans un sous-dossier, PyCharm est alors confus au sujet des importations. Tuer le cache peut aider pendant un moment, mais ce n'est pas la bonne approche. Marquez le répertoire des sources en tant que root et tout va bien.
predmod il y a
133

La réponse de Dmitry n'a pas fonctionné pour moi.

J'ai fait travailler le mien en allant dans Project Interpreters, en sélectionnant l'onglet "Paths" et en appuyant sur le bouton Actualiser dans ce sous-menu. Il s'est rempli automatiquement avec quelque chose appelé "python-skeletons".

edit : capture d'écran utilisant PyCharm 3.4.1 (c'est assez bien caché)

entrez la description de l'image ici

Kelorek
la source
6
Où est "Python Interpreters". Voulez-vous dire "Project Interpreters"? J'utilise Linux et je n'ai pas pu trouver l'onglet Chemins non plus.
Baskaya
1
Dans PyCharm 3.4 sur OSX, c'est une icône qui ressemble à une petite arborescence de dossiers et ne dit pas "Chemins".
Daniel Bushman
12
Pour toute personne encore confuse (dans 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
Il n'y a pas un tel bouton de rafraîchissement dans PyCharm 4, seulement les signes plus et moins.
dtheodor
3
@Sarah Dans PyCharm 4.0.4, dans la fenêtre "Chemins d'interprétation", je n'ai pas le bouton "recharger la liste des chemins" (icône d'actualisation bleue en bas). De plus, je ne vois aucun chemin dans la liste et les boutons plus et moins sont désactivés.
Henrik Heimbuerger
70

Il existe de nombreuses solutions à cela, certaines plus pratiques que d'autres, et elles ne fonctionnent pas toujours.

Voici tout ce que vous pouvez essayer, en passant de «rapide» à «ennuyeux»:

  • Faire File->Invalidate Caches / Restart et redémarrez PyCharm.
    • Vous pouvez également le faire après l'une des méthodes ci-dessous, juste pour être sûr.
  • Tout d'abord, vérifiez quel interprète vous exécutez: Run-> Edit Configurations-> Configuration->Python Interpreter .
  • Rafraîchissez les chemins de votre interprète:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> 'Project Interpreter': Icône d'engrenage ->More...
    • Cliquez sur le bouton "Afficher les chemins" (en bas)
    • Cliquez sur le bouton «Actualiser» (en bas)
  • Supprimez l'interpréteur et ajoutez-le à nouveau:
    • File -> Settings
    • Project: [name]-> Project Interpreter-> 'Project Interpreter': Icône d'engrenage ->More...
    • Cliquez sur le bouton «Supprimer»
    • Cliquez sur le bouton «Ajouter» et rajoutez votre interpéter
  • Supprimer vos préférences de projet
    • Supprimez le .ideadossier de votre projet
    • Fermer et rouvrir PyCharm
    • Ouvrez votre projet à partir de zéro
  • Supprimez vos préférences utilisateur PyCharm (mais sauvegardez-les d'abord).
    • ~/.PyCharm50 sur Mac
    • %homepath%/.PyCharm50 sous Windows
  • Basculez vers un autre interprète, puis revenez à celui que vous voulez.
  • Créez un nouvel environnement virtuel et basculez vers l'interpréteur de ces environnements.
  • Passez à un autre interprète, ne revenez pas en arrière.
florisla
la source
J'ai ce problème depuis aussi longtemps que j'utilise PyCharm et ils ne peuvent toujours pas le résoudre de manière fiable. Heureusement que vous avez couvert la majeure partie du travail autour d'une manière ou d'une autre finit par résoudre le problème. C'est marrant comme je reviens de temps en temps à cette réponse pour comprendre ce que j'ai oublié d'essayer.
Alex
3
J'ai descendu cette liste et supprimer / rajouter l'interprète a fonctionné pour moi. Merci!
Mark
16

Dans mon cas, c'était la structure des répertoires. Mon projet ressemble à ceci:

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

Donc, faites un clic droit sur dir_b> "marquer le répertoire comme"> "racine du projet"

Shoham
la source
2
La question n'était pas que PyCharm ne reconnaît pas le code du projet . Il ne reconnaît pas les méthodes intégrées Python standard.
florisla
Résolu mon problème sur PyCharm 2019.3.3 sur MacOS
samisnotinsane
11

Je me retrouve à supprimer et à rajouter l'interpréteur distant pour résoudre ce problème lorsque l'invalidation des caches ou des chemins d'actualisation ne fonctionne pas.

J'utilise vagrant et de temps en temps si j'ajoute une nouvelle machine virtuelle à ma configuration multi-vm, le port transféré change et cela semble confondre PyCharm lorsqu'il essaie d'utiliser le mauvais port pour SSH. Changer le port ne semble pas aider les références cassées.

Thomas Farvour
la source
10

Si aucune des autres solutions ne fonctionne pour vous, essayez (sauvegarde) et supprimez votre dossier ~ / .PyCharm40, puis rouvrez PyCharm. Cela tuera également toutes vos préférences.

Sur Mac, vous souhaitez supprimer ~ / Library / Caches / Pycharm40 et ~ / Library / Preferences / PyCharm40.

Et sous Windows: C: \ Users \ $ USER.PyCharm40.

Imran
la source
10

Testé avec PyCharm 4.0.6 (OSX 10.10.3) en suivant ces étapes:

  1. Cliquez sur le menu PyCharm.
  2. Sélectionnez Project Interpreter.
  3. Sélectionnez l'icône d'engrenage.
  4. Sélectionnez le bouton Plus.
  5. Sélectionnez Project Interpreter dans lequel vous vous trouvez.
  6. Sélectionnez le bouton Tree Directory.
  7. Sélectionnez Recharger la liste des chemins.

Problème résolu!

siripan
la source
10

très facile

il vous suffit de marquer votre répertoire racine comme: SOURCE ROOT (rouge), et vos applications: EXCLUDED ROOT (bleu),

alors la référence non résolue disparaîtra.

  • entrez la description de l'image icisi vous utilisez PyChram pro, faites-le automatiquement pour vous.
mujad
la source
5
J'ai pycharm pro et il ne l'a pas fait pour moi mais après avoir correctement marqué les dossiers manuellement, cela a fonctionné
Jose
Oui, c'est la bonne réponse et non pas une option nucléaire où l'effet secondaire aide pendant un moment mais ne traite pas de la façon dont les outils de jetbrain pensent ("tuer le cache", à droite ... et quand il sera reconstruit? "Tuez-le à nouveau ! "). Le titre, qui était exactement un problème dans mes projets, où la racine du projet n'est pas nécessairement la racine des sources et les importations ne le comprennent pas. Voici des informations directement de la bouche des chevaux jetbrains.com/help/pycharm/content-root.html "PyCharm utilise les racines sources comme point de départ pour résoudre les importations"!
predmod il y a
6

Désolé de bump cette question, mais j'ai une mise à jour importante à faire.

Vous pouvez également vouloir restaurer votre interpréteur de projet en Python 2.7.6 si vous utilisez une autre version que celle-ci. Cela a fonctionné pour moi sur mon installation Ubuntu de PyCharm 4.04 professionnel après qu'aucune des autres recommandations n'ait résolu mon problème.

Fairlight Evony
la source
1
Passer à l'interpréteur Python 2 local puis revenir à votre interprète Python 3 distant a corrigé cela aussi pour moi.
James Fletcher
Cela fonctionne également sur PyCharm 5 Professional. Aucune des autres solutions de cet article n'a fonctionné pour moi. Je suis entré Settings -> "Project Interpreters", j'ai cliqué sur l'engrenage, puis "More...". Choisissez l'interpréteur par défaut de python ( /usr/bin/python2.7dans mon cas), appuyez sur "Ok"et "Apply". Puis je suis revenu et j'ai choisi le virtualenv que je voulais utiliser. "Ok"et "Apply"encore, et c'est fixe.
Josh
Il en va de même FileNotFoundErrorpour Python-3 uniquement. Après avoir défini l'interpréteur correct dans File-Settings-Project-Interpreter et Run-Edit-Configurations, l'un d'eux a fait disparaître l'erreur.
Bob Stein
3

Vous pouvez essayer de fermer Pycharm, de supprimer le .ideadossier de votre projet, puis de redémarrer Pycharm et de recréer le projet. Cela a fonctionné pour moi, mais pas le cache d'invalidation.

Jason McVetta
la source
2

J'ai finalement réussi à faire en sorte qu'aucune des solutions proposées ne fonctionne pour moi. Je jouais avec un projet de framework de repos django et j'utilisais un virtualenv que j'avais configuré avec. J'ai pu réparer Pycharm en marquant le dossier racine comme racine des sources, mais le serveur de django lançait alors des exceptions de résolution. Donc, l'un fonctionnerait alors que l'autre ne fonctionnerait pas et vice versa.

En fin de compte, je devais juste marquer le sous-dossier comme racine des sources dans pycharm. Donc ma structure était comme ça

-playground
     -env
     -playground

Ce deuxième dossier de terrain de jeu est celui que je devais marquer comme racine des sources pour que tout fonctionne comme prévu. Cela ne présentait aucun problème pour mon scénario, c'était donc une solution viable.

Je pensais juste partager au cas où quelqu'un d'autre pourrait l'utiliser.

user2233949
la source
2

Il pourrait également s'agir d'un problème de version python. J'ai dû choisir le bon pour le faire fonctionner. entrez la description de l'image ici

Shehaaz
la source
2

Si vous souhaitez ignorer uniquement certaines erreurs de "référence non résolue", vous pouvez également le dire explicitement à PyCharm en le plaçant devant votre classe / méthode / fonction:

# noinspection PyUnresolvedReferences
flix
la source
1

J'ai fermé tous les autres projets et dirigé mon projet requis de manière isolée à Pycharm. J'ai créé un virtualenv distinct de pycharm et y ai ajouté tous les modules requis en utilisant pip. J'ai ajouté cet environnement virtuel dans l'interpréteur de projet. Cela a résolu mon problème.

Waqar Detho
la source
1

Geeze quel cauchemar, ma fusion de différentes réponses StackOVerflow:

  1. Basculez vers l'interpréteur local /usr/bin/pythonX.X et appliquez
  2. Voir les chemins comme la réponse ci-dessus
  3. Trouvez le chemin des squelettes. Le mien était (/home/tim/Desktop/pycharm-community-2016.2.3/helpers/python-skeletons)
  4. Revenez à virt interpreter et ajoutez manuellement le chemin des squelettes s'il ne s'affiche pas automatiquement.
Tim
la source
1

Aucune des solutions ci-dessus n'a fonctionné pour moi!
Si vous utilisez un environnement virtuel pour votre projet, assurez-vous d'appliquer le python.exefichier qui se trouve dans votre répertoire d'environnement virtuel en tant qu'interprète pour le projet, (Alt + Ctrl + Shift + S) cela a résolu le problème pour moi.

Ali Sherafat
la source
1

Dans mon cas, l'erreur d'inspection apparaît en raison d'un cas très spécifique de code python. Une fonction min qui contient deux fonctions numpy et deux accès à la liste fait que mon inspection de code donne ce genre d'erreurs.

La suppression de la ligne 'd = 0' dans l'exemple suivant donne une erreur de référence non résolue comme prévu, mais la lecture ne fait pas disparaître l'erreur pour l'inspecteur de code. Je peux toujours exécuter le code sans problème par la suite.

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])

L'effacement des caches et le rechargement de la liste des chemins ne fonctionnent pas. Seule la modification du code avec l'un des correctifs d'exemple suivants fonctionne:

  • Un autre ordre des paramètres 'min': schématiquement SUTV mais pas STUV ou TSUV
  • Utilisation d'une méthode à la place de la fonction: S [d] .abs () au lieu de np.abs (S [d])
  • Utilisation de la fonction abs () intégrée
  • Ajout d'un nombre à un paramètre de choix: U [d] + 0.
Wannes Goethals
la source
1

Aucune des réponses n'a résolu mon problème.

Ce qui m’a permis de changer d’environnement et de revenir au même environnement. File->Settings->Project interpreter

J'utilise des environnements conda.

Kristjan Kica
la source
1

A fonctionné pour moi avec une action beaucoup plus simple :


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

Bénéfice - Pycharm met à jour les squelettes et tout va bien.

Alexander.Iljushkin
la source
0

Si vous utilisez, vagrantl'erreur peut être causée par un mauvais interpréteur python. Dans notre vagrantnous utilisons pyenvdonc j'ai dû changer de Python Interpreter pathchemin de /usr/bin/pythonà/home/vagrant/.pyenv/versions/vagrant/bin/python entrez la description de l'image ici

Daniil Mashkin
la source
0

J'ai un projet dans lequel un fichier src/importe un autre fichier dans le même répertoire. Pour que PyCharm reconnaisse, je devais aller dans Fichier> Paramètres> Projet> Structure du projet> sélectionner le srcdossier et cliquer sur "Marquer comme: Sources"

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

Les racines source contiennent les fichiers source et les ressources réels. PyCharm utilise les racines sources comme point de départ pour résoudre les importations

qwr
la source
0

Mon problème est que Flask-WTF n'est pas résolu par PyCharm . J'ai essayé de réinstaller puis d'installer ou d' invalider le cache et de redémarrer PyCharm, mais cela ne fonctionne toujours pas.

Ensuite, j'ai trouvé cette solution et cela fonctionne parfaitement pour moi.

  1. Ouvrez Project Interpreter par Ctrl + Alt + S (Windows), puis cliquez sur Installer (+) un nouveau package.

entrez la description de l'image ici

  1. Tapez le package qui n'est pas résolu par PyCharm, puis cliquez sur Installer le package . Cliquez ensuite sur OK .

entrez la description de l'image ici

Maintenant, vous verrez que votre bibliothèque a été résolue.

Hien Quang Le
la source
-1

Utilisez-vous virtualenv?

si c'est le cas, vous devez informer PyCharm pour chaque modification de l'emplacement du fichier python.exe souhaité (simplement ./activate n'est pas suffisant pour PyCharm)

Assurez-vous que Pycharm pointe vers l'interprète et les packages corrects: Fichier -> Paramètres -> Projet -> Interprète de projet. Cliquez sur l'engrenage et choisissez python.exe dans le dossier Scripts de virtualenv

entrez la description de l'image ici

Bar Horing
la source