web-dev-qa-db-fra.com

Pourquoi PyCharm génère-t-il des erreurs de référence non résolues sur certaines importations Numpy?

La ligne suivante dans PyCharm est marquée par une inspection à la volée avec des erreurs de référence non résolues pour chaque importation. (Ils sont soulignés en rouge.)

from numpy import tan, arcsin, arccos, arctan

Cependant, les importations suivantes ne provoquent aucune erreur/avertissement:

from numpy import sin, cos, arctan2, sqrt, cross, pi

Le code dans lequel j'utilise ces importations fonctionne correctement, sans erreur ni avertissement. Je m'appuie généralement sur les erreurs rouges de PyCharm pour m'avertir que mon code est cassé et ne fonctionnera pas, mais dans ce cas, PyCharm a tort.

Pourquoi certaines fonctions de numpy sont-elles reconnues par l'introspection de PyCharm et d'autres pas?

Versions actuelles:

  • Windows 7 64 bits
  • Python 2.7.5
  • PyCharm 3.1.2
  • Numpy 1.8

Merci!

23
flutefreak7

Vous obtenez cela en raison de l'analyse statique de PyCharm. Désormais, Python utilise des squelettes statiques (certains sont pré-générés et d’autres sont générés) pour vous fournir l’analyse. Jetez un oeil sur les squelettes pré-générés ici -> https://github.com/JetBrains/python-skeletons

Cela pourrait être résolu en activant les éléments suivants:

enter image description here

Cependant, si cela ne fonctionne pas:

enter image description here

qui bloquera l'erreur, il apparaîtra comme un commentaire au-dessus de la ligne.

20
Games Brainiac

La configuration Python est spécifiée dans (au moins) deux emplacements: Run | Edit Configurations | Python | Python Interpreter et File | Settings | Project | Project Interpreter. Mon erreur est que je n’ai pas défini l’installation Python correcte dans le File | Settings .... Par conséquent, il faisait référence à une configuration Python sur laquelle l'importation n'était pas installée (par exemple, NumPy).

Une fois que j'ai défini ces deux emplacements sur le même emplacement, l'installation correcte de Python, j'ai effectué un File | Invalidate Caches / Restart, puis tout s'est bien passé.

Le troisième endroit à vérifier est File | Default Settings... | Project Interpreter et assurez-vous qu'il correspond aux autres paramètres.

9
David Ching

Ce qui suit aide souvent à résoudre références fausses-positives non résolues

File | Invalidate Caches
7
Giacomo Marciani

Le développeur PyCharm a publié une solution de contournement pour l'une des causes possibles d'échec de l'inspection: 

https://youtrack.jetbrains.com/issue/PY-32029

Résumé: l'inspection peut échouer si vous avez un dossier venv dans le répertoire du projet. Faites un clic droit dessus, marquez le répertoire comme exclu.

3
psarka

Vous pouvez désactiver les inspections dans des bibliothèques spécifiques (telles que numpy). J'ai trouvé cela très utile car ma barre de défilement était constamment allumée à cause de ce problème. Allez dans Paramètres -> Éditeur -> Inspections -> Python -> Références non résolues (près du bas) et allez à la section Ignorer les références en bas à droite de la fenêtre. 

Ajoutez une entrée avec "numpy. *" Sans les guillemets et vous ne verrez plus ces références non résolues illuminer votre barre de défilement!

0
bingecoder

J'ai pu résoudre le problème en utilisant simplement virtualenv au lieu de l'interpréteur système. Aucune des autres méthodes que j'ai trouvées ne fonctionnait pour moi auparavant.

J'utilise Windows 7, PyCharm Community Edition 2018.2.4, Python 3.6.7, Numpy 1.15.4

  1. Créez un nouveau projet nommé my_project et configurez-le pour qu'il utilise l'interpréteur système File -> Settings -> Project: my_project -> Project Interpreter -> Select your project -> Select the system interpreter
  2. Créez le script de test suivant script1.py dans le projet:

    import numpy as np
    print(np.tan(8))
    

    Maintenant, exécuter ce script fonctionne bien et affiche un certain nombre, mais Pycharm émet un avertissement de référence non résolu et Ctrl->Click sur tan ne va pas au code numpy comme il se doit.

  3. Créer manuellement l'environnement virtuel

    $cd dir/to/my_project
    $virtualenv venv
    $venv\Scripts\activate
    (venv) $pip install numpy
    (venv) $deactivate
    

    Sous Linux, remplacez la ligne d'activation par source venv/bin/activate

  4. Dites à PyCharm d'utiliser l'environnement virtuel: File -> Settings -> Project: my_project -> Project Interpreter -> Select your project -> Select Python 3.6 (my_project) qui devrait contenir le fichier python.exe dans votre dossier de projet quelque part dans le dossier venv.
  5. Maintenant File -> Invalide Caches / Restart ... -> Invalidate and restart
  6. Attendez que toute l’indexation soit faite et vérifiez si vous pouvez Ctrl->Click sur tan dans votre script1.py

De cette façon, j'ai pu résoudre le même problème pour d'autres paquets tels que torch et opencv (créer simplement un environnement virtuel avec tous les paquets dont j'ai besoin). Pas plus de références non résolues jusqu'à présent.

Aucune idée pourquoi cela fonctionnerait de cette façon mais ne fonctionnerait pas avec l'interpréteur de système.

0
Simon