2017-03-15 4 views
0

Edit:__init__.py Dateien enthalten sind, aber ich bin mit Python 3 - Ich glaube nicht, es darauf ankommt.Warum wird meine Klasse nicht in Python importiert?

Eine andere Bearbeitung: Alles in config.py wird ohne Probleme importieren. Wenn ich einfach from cache import Cache weglasse dann keine Fehler. Interessanterweise treten keine Fehler beim Importieren auf Config in config.py

Ich kann nicht herausfinden, was hier falsch ist. Ich erhalte einen Fehler, wenn ich versuche, eine bestimmte Klasse zu importieren. Hier ist, was mein Projekt-Layout wie folgt aussieht:

app/ 
    dir1/ 
     config.py 
     cache.py 
     manager.py 
     __init__.py 
    test/ 
     test.py 
     __init__.py 

cache.py:

import sys 
import os 
sys.path.append(os.path.dirname(__file__)) 
from manager import Manager, AnotherClass 
from config import Config 

manager.py

import sys 
import os 
sys.path.append(os.path.dirname(__file__)) 
from config import Config 
from cache import Cache 

test.py

So

wenn ich laufe test.py ich diese:

File "/path/to/project/app/dir1/<module> 
from cache import Cache 

ImportError: cannot import name 'Cache' 

from manager import Manager line 5, 

Obwohl config.Config Lasten nur in Ordnung, es gibt keine Fehler, aber sobald ich versuche cache.Cache zu importieren kann es plötzlich nicht mehr finden oder importieren jede Klasse in cache.py. Alle Dateien haben die gleichen Berechtigungen. Kann mir jemand sagen, was hier nicht stimmt?

+0

Sie haben keine '__init __. Py' Dateien in Modulen. –

+0

Verwandte - [? Was ist __init__.py für] (http://stackoverflow.com/questions/448271/what-is-init-py-for_) – Lix

+0

Sie sollten überprüfen, ob das Verzeichnis bereits in sys.path ist. Es ist nur eine einfache Liste, und wenn du dich daran anhängst, wird es sehr groß werden. –

Antwort

3

Sie vermissen die __init__.py Datei in Ihrem Modul

app/ 
    __init__.py 
    dir1/ 
     __init__.py 
     config.py 
     cache.py 
     manager.py 
    test/ 
     test.py 

und stattdessen mit sys.path von Unordnung sollten wie

from .config import Config 
from .cache import Cache 

Python 2 müssen unter Umständen auch eine Linie

from __future__ import absolute_import 
einen relativen Import tun

vor diesen Importen.

Verwandte Themen