Python ne peut pas importer le nom de <class>
J'ai été la lutte la plupart de la nuit à essayer de résoudre un message d'erreur d'importation.
C'est un problème commun, mais pas question précédente répond tout à fait à ma question.
Je suis avec PyDev (un plugin Eclipse), et la bibliothèque Kivy (une bibliothèque Python)
J'ai un fichier de structure comme ceci:
<code>
__init__.py
main.py
engine.py
main_menu_widget.py
"code" est organisé dans le dossier eclipse "MyProject" mais ce n'est pas un paquet que je n'ai pas l'inclure.
Les fichiers ressembler à ceci:
main.py
# main.py
from code.engine import Engine
class MotionApp(App):
# Ommited
engine.py
# engine.py
from code.main_menu_widget import MainMenuWidget
class Engine():
# Ommited
main_menu_widget.py
# main_menu_widget.py
from code.engine import Engine
class MainMenuWidget(Screen):
pass
L'erreur, j'obtiens, en détail, est:
Traceback (most recent call last):
File "C:\MyProject\code\main.py", line 8, in <module>
from code.engine import Engine
File "C:\MyProject\code\engine.py", line 6, in <module>
from code.main_menu_widget import MainMenuWidget
File "C:\MyProject\code\main_menu_widget.py", line 3, in <module>
from code.engine import Engine
Une idée de ce que j'ai fait de mal ici? J'ai juste renommé mon dossier complet de la structure parce que j'ai foiré cette structure de module si mauvais, mais je pense que je suis proche de la façon dont il devrait ressembler....
OriginalL'auteur MintyAnt | 2013-03-04
Vous devez vous connecter pour publier un commentaire.
Il semble y avoir une importation circulaire.
de
engine.py
vous importezmain_menu_widget
tout demain_menu_widget
vous importezengine
.Qui est clairement une circulaire à l'importation qui n'est pas autorisé par python.
OriginalL'auteur Gaurav Kumar
c'est dans le même dossier, relatif à la nom de paquet (c'est une bonne pratique de le faire de toute façon):
C'est généralement une bonne pratique de l'utilisation relative des importations lors de l'importation de choses à partir de votre propre projet.
Juste assez. Je l'ai juste essayé, pas de chance, il jette la même erreur, même ligne. "ne peut pas importer le nom de Moteur"
pouvez-vous coller l'intégralité de l'erreur et de la trace de la pile s'il vous plaît?
oh, duh - vous avez une dépendance circulaire, main_menu_widget.py dépend engine.py et vica verca
OriginalL'auteur Brian Dilley
Votre répertoire de code est un paquet. S'assurer que le répertoire au-dessus d'elle, je.e
C:\MyProject
à en juger par vos messages d'erreur, est dans votre PYTHONPATH.Ouvrir le menu contextuel en sélectionnant votre projet et en cliquant sur votre souris bouton droit, puis sélectionnez Propriétés. Sélectionnez PyDev - PYTHONPATH et à partir de là, le les dossiers de la Source onglet.
Vérifiez que le répertoire mentionné ci-dessus est présent; si elle n'est pas presse Ajouter dossier source, sélectionnez à partir du dialogue et de la presse OK.
OriginalL'auteur Nicola Musatti