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:
Merci!
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:
Cependant, si cela ne fonctionne pas:
qui bloquera l'erreur, il apparaîtra comme un commentaire au-dessus de la ligne.
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.
Ce qui suit aide souvent à résoudre références fausses-positives non résolues
File | Invalidate Caches
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.
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!
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
File -> Settings -> Project: my_project -> Project Interpreter -> Select your project -> Select the system interpreter
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.
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
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
.File -> Invalide Caches / Restart ... -> Invalidate and restart
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.