import-Anweisungen und Dokumentation mit sphinx

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bambie
User
Beiträge: 15
Registriert: Mittwoch 26. März 2008, 01:09

Tag zusammen,
ich programmiere schon seit einiger Zeit an einem kleinen Projekt und wollte mir jetzt mal verschiedene Möglichkeiten der Dokumentation anschauen. Hängen geblieben bin ich dann bei sphinx, da mir die textbasierte Erstellung gefällt und es auch von Python selbst benutzt wird (Das einizge was noch fehlt sind automatische erstellungen von Docstrings in eclipse).
Nun bin ich aber auf ein Problem gestoßen, welches mich zum nachdenkn über Import-Anweisungen gebracht hat. Die Struktur sieht bei mir in etwa so aus:

Code: Alles auswählen

projekt/
├── Models
│   ├── __init__.py
│   ├── modul1.py
│   └── modul2.py
├── __init__.py
├── modul1.py
├── modul2.py
└── websiteHandler
    ├── __init__.py
    ├── handler1.py
    ├── handler2.py
    └── handler3.py
In den Models Ordner liegen jeweils Module und Klassen, die sich um die Datenbankmodelle kümmern (elixir). Nun ist es so, das die websiteHandler Objekte von eben diesen Klassen erstellen und umgekehrt die Module in Models die websiteHandler aufrufen, falls Objekte veraltet sind.
Zum importieren habe ich jetzt einfach den Ordner, wo das Projekt liegt (workspace-Ordner in eclipse) , zum Pythonpath hinzugefügt. Das hat zur Folge, das die import-Anweisungen so aussehen:

Code: Alles auswählen

import projekt.websiteHandler.handler1
Nun möchte ich die das ganze mit sphinx dokumentieren. Allerdings erzeugt sphinx in der Doku immer die Modulnamen projekt.websiteHandler oder projekt.Models.model1. Was zur Folge hat, das bei der Modulauflistung alles unter dem Buchstaben p gelistet ist und man die Liste meiner Meinung nach nicht gebrauchen kann.

Nun meine Frage, was ist der "richtige" Weg, die richtige Auflistung zu verwenden? Benutzt wird das ganze unter Mac (python2.7), Debian Squeeze (2.6) und Wheezy (2.7).
Zum einen könnte ich relative Anweisungen verwenden oder den Projektordner selbst zum pythonpath hinzufügen, unter letzterem leidet dann aber die Portierbarkeit, da ich auf anderen Systemen erst den pythonpath ändern muss. Das Hinzufügen des Pythonpath in jedem Modul halte ich eigentlich auch nicht für praktikabel.

Ich hoffe, ihr könnt mir irgendwie helfen oder Anregungen geben. Vielleicht kennt ja auch noch jemand einen schönen Weg, automatisch Docstrings für sphinx mit Eclipse zu erstellen.

mfg Bambie
BlackJack

@Bambie: Du suchst vielleicht die Konfigurationsoption modindex_common_prefix.
Antworten