2008-09-05 6 views
42

sagen, dass ich die folgende Dateistruktur haben:Python-Pakete - Import von Klasse, Datei nicht

app/ 
    app.py 
    controllers/ 
    __init__.py 
    project.py 
    plugin.py 

Wenn app/controllers/project.py eine Klasse Projekt definiert, app.py würde es so importieren:

from app.controllers.project import Project 

Ich mag würde nur in der Lage sein zu tun:

from app.controllers import Project 

Wie dies geschehen würde?

Antwort

79

Sie benötigen

from project import Project 

in controllers/__init__.py zu setzen.

Beachten Sie, dass, wenn Absolute imports die Standard werden (Python 2.7?), Sollten Sie einen Punkt hinzufügen, bevor die Modulnamen (zur Vermeidung von Kollisionen mit einem Modell auf oberster Ebene namens project), das heißt,

from .project import Project