J'ai une structure de répertoire
├── simulate.py
├── src
│ ├── networkAlgorithm.py
│ ├── ...
Et je peux accéder au module réseau avec sys.path.insert()
.
import sys
import os.path
sys.path.insert(0, "./src")
from networkAlgorithm import *
Cependant, pycharm se plaint de ne pouvoir accéder au module. Comment puis-je apprendre à pycham à résoudre la référence?
En l’ajoutant manuellement comme vous l’avez fait is en fait, c’est une façon de le faire, mais il existe une méthode plus simple: il suffit de dire à pycharm que vous souhaitez ajouter le dossier src
en tant que source racine, puis en ajoutant la racine des sources à votre chemin python.
De cette façon, vous n'avez pas à coder en dur dans les paramètres de votre interprète:
src
en tant que racine de contenu source:
PYTHONPATH
:
De cette façon, vous pouvez ajouter ce que vous voulez en tant que racine source et tout fonctionnera simplement. Si vous l’annulez en tant que racine source, vous obtenez sera une erreur:
__init__.py
dans le dossier src
src
en tant que racine sourcePYTHONPATH
(voir ci-dessus).Si quelqu'un regarde encore cela, la réponse acceptée fonctionne toujours pour PyCharm 2016.3 lorsque je l'ai essayée. L'interface utilisateur a peut-être changé, mais les options sont toujours les mêmes.
c'est à dire. Faites un clic droit sur votre dossier racine -> 'Mark Directory As' -> Racine source
Normalement, $ PYTHONPATH est utilisé pour apprendre à un interprète python à trouver les modules nécessaires . PyCharm doit ajouter le chemin dans Préférence.
Après avoir testé toutes les solutions de contournement, je vous suggère de jeter un œil à Settings -> Project -> project dependencies
et de les réorganiser.
En général, il s’agit d’un problème de paquet manquant. Il suffit de placer le curseur à la référence non résolue et d’appuyer sur Alt+Enter
pour afficher les options, vous devez donc savoir comment le résoudre.
Après avoir suivi la réponse acceptée, voici ce qui a été résolu pour moi:
File
→ Settings
→ Project <your directory/project>
→ Project Dependencies
Choisissez le répertoire/projet dans lequel se trouve votre fichier contenant les importations non résolues et cochez la case pour indiquer à Pycharm que ce projet dépend de votre autre projet.
La hiérarchie de mes dossiers est légèrement différente de celle de la question. Le mien est comme ça
├── MyDirectory
│ └── simulate.py
├── src
│ ├── networkAlgorithm.py
│ ├── ...
Dire à Pycharm que src dépend de MyDirectory
a résolu le problème pour moi!
Dans mon cas, le problème était que j'utilisais Virtual environment
qui n'avait pas accès aux packages de site globaux. Ainsi, l'interprète n'était pas au courant des nouveaux packages installés.
Pour résoudre le problème, il suffit de modifier ou de recréer votre interprète virtuel et de cocher l'option Inherit global site-packages
.
Veuillez vérifier si vous utilisez le bon interprète que vous êtes censé utiliser. J'obtenais l'erreur "référence non résolue 'Django" "pour résoudre ceci. J'ai changé l'interpréteur de projet (Modifié Python 3 en Python 2.7) depuis les paramètres du projet: Sélectionnez Projet, allez dans Fichier -> Paramètres -> Projet: -> Interprète de projet -> Naviguer et sélectionner la version ou interprète appropriée (par exemple, /usr/bin/python2.7).
Bien souvent, le plugin n'est pas installé. par exemple.
Si vous développez un projet Django et que le plug-in Django n'est pas installé dans pyCharm, le message d'erreur 'Référence non résolue' s'affiche. Voir: https://www.jetbrains.com/pycharm/help/resolving-references.html
Pycharm utilise venv. Dans la console de venv, vous devez installer les packages explicitement ou aller dans settings -> project interpreter -> add interpreter -> inherit global site-packages
.