web-dev-qa-db-fra.com

Problèmes d'importation non résolus avec PyDev et Eclipse

Je suis très nouveau dans PyDev et Python, bien que j’ai utilisé Eclipse pour Javabondance. J'essaie de travailler à travers certains exemples de Dive Into Python et cela me semble être un problème extrêmement trivial qui devient de plus en plus énervant. J'utilise Ubuntu Linux 10.04.

Je veux pouvoir utiliser le fichier odbchelper.py, qui se trouve dans le répertoire _/Desktop/Python_Tutorials/diveintopython/py_

Voici le fichier example.py sur lequel je travaille dans mon projet PyDev/Eclipse:

_import sys
sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py")
_

Cela fonctionne bien, mais je souhaite ensuite que la prochaine ligne de mon code soit:

_import odbchelper
_

et cela entraîne une erreur d'importation non résolue à chaque fois. J'ai ajouté des fichiers ___init__.py_ à presque tous les répertoires possibles et cela n'aide en rien. J'ai essayé d'ajouter des fichiers ___init__.py_ un par un aux différents niveaux de répertoires entre l'emplacement du projet et le fichier odbchelper.py, et j'ai également essayé d'ajouter les fichiers ___init__.py_ à tous les répertoires entre les deux simultanément. Ni fonctionne.

Tout ce que je veux faire, c'est avoir un projet quelque part dans un autre répertoire, disons _/Desktop/MyStuff/Project_, dans lequel j'ai example.py ... puis depuis example.py je veux importer odbchelper.py de _/Desktop/Python_Tutorials/diveintopython/py/_

Toutes les réponses au babillard que je peux trouver ne font que dire d'utiliser la fonction sys.path.append() pour ajouter ce répertoire à mon chemin, puis de l'importer ... mais c'est précisément ce que je fais dans mon code et cela ne fonctionne pas.

J'ai aussi essayé le Ctrl-1 astuce pour supprimer le message d'erreur, mais le programme ne fonctionne toujours pas correctement. Je reçois une erreur, _ImportError: No module named odbchelper_. Il est donc clair que le chemin n’a pas été ajouté ou qu’il ya un problème qui a échappé à toutes mes nombreuses permutations consistant à ajouter des fichiers ___init__.py_.

C'est très frustrant que quelque chose d'aussi simple ... appeler des éléments d'un fichier qui existe ailleurs sur ma machine ... nécessite autant d'efforts.

106
ely

Dans les propriétés de votre projet pydev, il existe un volet appelé "PyDev - PYTHONPATH", avec un sous-volet appelé "Bibliothèques externes". Vous pouvez ajouter des dossiers source (tout dossier comportant un __init__.py) au chemin en utilisant ce volet. Votre code de projet pourra alors importer des modules à partir de ces dossiers sources.

129
David German

J'utilise Eclipse kepler 4.3, PyDev 3.9.2 et sur mon Ubuntu 14.04, j'ai rencontré le même problème. J'ai essayé et passé des heures, avec tout ce qui précède, la plupart des options, mais en vain. Ensuite, j'ai essayé ce qui était génial:

  • Sélectionnez Projet -> Clic droit-> PyDev -> Supprimer la configuration du projet PyDev
  • fichier-> redémarrage

Et j’utilisais Python 2.7 comme interprète, bien que cela n’ait aucun effet, je pense.

48
BitByte_Bake

Je viens de mettre à niveau un projet WXWindows vers Python 2.7 et je n’ai pas eu beaucoup de mal à faire en sorte que Pydev reconnaisse le nouvel interprète. Fait la même chose que ci-dessus en configurant l'interprète, fait une nouvelle installation d'Eclipse et de Pydev. Pensant qu'une partie de python doit avoir été corrompue, j'ai donc tout ré-installé à nouveau. Arghh! Fermez et rouvrez le projet et redémarrez Eclipse entre toutes ces modifications.

FINALEMENT remarqué que vous pouvez 'supprimer la configuration du projet PyDev' en faisant un clic droit sur le projet. Ensuite, il peut être transformé en un projet PyDev à nouveau, maintenant c'est bon comme de l'or!

42
Paul

J'ai corrigé mon pythonpath et tout était dandy lorsque j'ai importé des éléments via la console, mais toutes ces importations précédemment non résolues étaient toujours marquées comme des erreurs dans mon code, quel que soit le nombre de fois où j'ai redémarré Eclipse ou actualisé/nettoyé le projet.

J'ai cliqué avec le bouton droit de la souris sur le projet-> Pydev-> Supprimer les marqueurs d'erreur et le problème a été résolu. Ne vous inquiétez pas, si votre code contient des erreurs réelles, elles seront à nouveau marquées.

17
Martin

projet -> propriétés -> pydev-pythonpath -> bibliothèques externes -> add dossier source, ajoutez le dossier PARENT du projet. Puis redémarrez Eclipse.

10
zhaokongsheng

Voici ce qui a fonctionné pour moi (suggéré par soulBit):

1) Restart using restart from the file menu
2) Once it started again, manually close and open it.

C'est la solution la plus simple jamais réalisée et elle supprime complètement la chose gênante.

4
Brana

J'utilise Eclipse 4.2.0 (Juno) et PyDev 2.8.1 et j'ai rencontré ce problème avec une bibliothèque installée dans le chemin de mon site-packages. Selon cette SO question:

fichiers Pydev et * .pyc

... il y a un problème avec les fichiers PyDev et pyc. Dans le cas de la lib en particulier que j'ai essayé de référencer, tout ce qui est livré est un fichier pyc.

Voici ce que j'ai fait pour remédier à cela:

  1. Installez uncompyle2 à partir de https://github.com/Mysterie/uncompyle2
  2. Exécutez uncompyle2 sur les fichiers * .pyc de la librairie de sites-packages. Exemple:

    uncompyle2 -r -o/tmp/chemin/à/site-packages/lib

  3. Renommez les fichiers * .pyc_dis obtenus à partir de uncompyle2 en * .py.
  4. Déplacez/copiez ces fichiers * .py vers le chemin du site-packages
  5. Dans Eclipse, sélectionnez Fichier> Redémarrer.

L'erreur d'importation non résolue relative aux fichiers .pyc doit maintenant disparaître.

1
MutantXenu

Il existe deux manières de résoudre ce problème:

  • Supprimez l'interprète Python de "interprètes Python" et ajoutez-le à nouveau.
  • Ou ajoutez simplement le dossier avec les bibliothèques de l'interprète que vous utilisez dans votre projet. Dans mon cas, j'utilisais "bottle" et le dossier que j'avais ajouté était "c:\Python33\Lib\site-packages\bottle-0.11.6 -py3.3.Egg "

Maintenant, je ne vois plus l'erreur, et la fonctionnalité de complétion de code fonctionne aussi avec "bouteille".

1
PachinSV

Après, à mon avis, va résoudre le problème

  1. Ajout du init. Py à votre dossier "~/Desktop/Python_Tutorials/diveintopython/py"
  2. Allez dans Fenêtre -> Préférences -> PyDev -> Interprètes -> Python Interprète pour supprimer votre paramètre Python Interpreter (la raison en est que PyDev est incapable d'actualiser automatiquement les mises à jour à un système PythonPath)
  3. Ajoutez dans l'interpréteur les mêmes détails qu'auparavant (ceci actualisera votre paramètre d'interprète Python avec les mises à jour apportées à votre chemin Python)
  4. Enfin, puisque votre dossier "~/Desktop/Python_Tutorials/diveintopython/py" n’est pas un PythonPath standard, vous devrez l’ajouter. Il existe deux façons de le faire.

une. Selon ce que David German a suggéré. Cependant, cela ne s'applique qu'aux projets particuliers dans lesquels vous vous trouvez. B. Ajouter dans "~/Bureau/Python_Tutorials/diveintopython/py" dans un nouveau PythonPath sous Fenêtre -> Préférences -> PyDev -> Interprètes -> Python Interprète -> Bibliothèques -> Nouveau dossier

J'espère que ça aide.

0
Ridwan Kurniawan