web-dev-qa-db-fra.com

PyCharm montre une erreur de référence non résolue pour un code valide

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


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

233
James McCalden

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

360
Dmitry Trofimov

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

Le mien a fonctionné en allant dans Project Interpreters, en sélectionnant l'onglet "Paths", puis en appuyant sur le bouton d'actualisation de ce sous-menu. Il s'est auto-rempli avec quelque chose appelé "python-squelettes".

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

enter image description here

117
kelorek

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

Voici tout ce que vous pouvez essayer, allant de 'rapide' à 'agaçant':

  • Faites 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.
  • Commencez par vérifier quel interprète vous utilisez: Run -> Edit Configurations -> Configuration -> Python Interpreter.
  • Actualisez les chemins de votre interprète:
    • File -> Settings
    • Project: [name] -> Project Interpreter -> 'Interprète de projet': icône d'engrenage -> More...
    • Cliquez sur le bouton 'Afficher les chemins' (en bas)
    • Cliquez sur le bouton 'Actualiser' (en bas)
  • Retirez l’interprète et rajoutez-le:
    • File -> Settings
    • Project: [name] -> Project Interpreter -> 'Interprète de projet': icône d'engrenage -> More...
    • Cliquez sur le bouton 'Supprimer'
    • Cliquez sur le bouton 'Ajouter' et rajoutez votre interpètre
  • Supprimer vos préférences de projet
    • Supprimer le dossier .idea de votre projet
    • Fermer et ré-ouvrir 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
  • Passez à 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.
50
florisla

Je me trouve en train de supprimer et d'ajouter à nouveau l'interpréteur distant pour résoudre ce problème lorsque l'invalidation des caches ou l'actualisation des chemins ne fonctionne pas.

J'utilise vagrant et chaque fois que j'ajoute un nouveau VM à ma configuration multi-vm, le port transféré change et cela semble confondre PyCharm lorsqu'il tente d'utiliser le mauvais port pour SSH. Changer le port ne semble pas aider les références cassées.

11
Thomas Farvour

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

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

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

11
Shoham

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 l'interprète de projet dans lequel vous vous trouvez.
  6. Bouton Sélectionner une arborescence de répertoires.
  7. Sélectionnez Recharger la liste des chemins.

Problème résolu!

10
siripan

Si aucune autre solution ne fonctionne pour vous, essayez de (sauvegarder) et de supprimer votre dossier ~/.PyCharm40, puis de rouvrir PyCharm. Cela va tuer toutes vos préférences aussi.

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

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

10
Imran

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

Vous voudrez peut-être également revenir à votre interpréteur de projet sur Python 2.7.6 si vous utilisez une version autre que celle utilisée. Cela a fonctionné pour moi sur mon installation Ubuntu de PyCharm 4.04 professional après qu'aucune autre recommandation n'ait résolu mon problème.

5
Fairlight Evony

Vous pouvez essayer de fermer Pycharm, en supprimant le dossier .idea de votre projet, puis en redémarrant Pycharm et en recréant le projet. Cela a fonctionné pour moi alors que l'invalidation du cache n'a pas fonctionné. 

3
Jason McVetta

Il pourrait également s'agir d'un problème de version python. Je devais choisir le bon pour le faire fonctionner .  enter image description here

2
Shehaaz

très facile

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

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

  • enter image description here Si vous utilisez PyChram Pro, faites-le automatiquement.
2
mujad

J'ai finalement réussi à faire fonctionner ce projet après qu'aucune des solutions proposées ne fonctionnait pour moi. Je jouais avec un projet de cadre de repos Django et utilisais une machine virtuelle que j'avais configurée avec. Je pouvais obtenir que Pycharm soit corrigé en marquant le dossier racine comme étant la source, mais le serveur de Django lançait des exceptions de résolution. Ainsi, l’un fonctionnerait quand l’autre ne le ferait pas et vice versa. 

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

-playground
     -env
     -playground

Ce second dossier est celui que je devais marquer comme racine des sources pour que tout fonctionne comme prévu. Cela n’a posé aucun problème pour mon scénario, c’est donc une solution viable. 

Je pensais que je partagerais au cas où quelqu'un d'autre pourrait l'utiliser.

2
user2233949

Aucune des solutions ci-dessus n'a fonctionné pour moi!
Si vous utilisez un environnement virtuel pour votre projet, veillez à appliquer le fichier python.exe 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.

1
Ali Sherafat

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

1
Waqar Detho

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 à une liste rend mon inspection de code donner ce genre d’erreurs. 

Si vous supprimez la ligne "d = 0" dans l'exemple suivant, l'erreur de référence non résolue est attendue, mais la lecture ne permet pas de supprimer l'erreur pour l'inspecteur de code. Je peux toujours exécuter le code sans problèmes 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])

Effacer les caches et recharger la liste des chemins ne fonctionne pas. La modification du code uniquement avec l'un des exemples de correctifs suivants fonctionne:

  • Une autre commande des paramètres 'min': schématiquement S U T V mais pas S T U V ou T S U V
  • 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.
1
Wannes Goethals

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

Pour moi, c’est de changer d’environnement et de revenir au même environnement. File->Settings->Project interpreter

J'utilise des environnements conda.

1
Kristjan Kica

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

  1. Passez à l’interprète local /usr/bin/pythonX.X et appliquez-le.
  2. Voir les chemins comme ci-dessus répondre
  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.
1
Tim

Si vous utilisez vagrant, l'erreur peut être provoquée par un interprète python incorrect . Dans notre vagrant, nous utilisons pyenv et j'ai donc dû changer le chemin Python Interpreter path de /usr/bin/python en /home/vagrant/.pyenv/versions/vagrant/bin/pythonenter image description here

0
Daniil Mashkin

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
0
flix