Frage

Diese Frage ist heute noch schwieriger, da ich heute noch kein Glück mit der Suchfunktion auf der Sphinx -Homepage hatte.

Ich habe eine Gruppe von Modulen, die ich von den Docstrings dokumentiert werden möchte. Dies sind jedoch keine reinen Python -Skripte. Sie werden nicht so kompilieren, weil sie aus einer C# -Anwendung ausgeführt werden, die eine neue Variable im ausführenden Bereich erstellt.

Für den Python -Compiler sieht es so aus, als hätte ich eine undefinierte Methode (die technisch gesehen technisch gesehen, bis C# die Ironpython -Skript -Engine erstellt und die Methode erstellt).

Wenn ich renne:

sphinx-build -b html output/html

Ich bekomme:

NameError: name 'injected_method' is not defined

Wie kann ich Sphinx dazu bringen, Kompilierungsfehler zu ignorieren und einfach meine Dokumentation zu generieren?

BEARBEITEN:

Wenn jemand weiß, ob eine Alternative zu Sphinx (wie EPYDOC) das Python -Skript nicht kompilieren muss, um die Funktionssignaturen und Docstrings zu erhalten, wäre dies ebenfalls hilfreich. Sphinx ist der am besten aussehende Dokumentationsgenerator, aber ich werde ihn aufgeben, wenn ich muss.

War es hilfreich?

Lösung 3

Okay, ich habe einen Weg gefunden, die Fehler umzugehen.

Beim Einrichten der eingebetteten Skriptumgebung, anstatt:

ScriptScope.SetVariable("injected_method", myMethod);

Ich benutze jetzt:

ScriptRuntime.Globals.SetVariable("injected_method", myMethod);

Und dann im Skript:

import injected_method

Dann habe ich in meinem Suchpfad eine dummy injected_method.py -Datei erstellt, die leer ist. Ich lösche die Dummy -Datei während des Aufbaus meines C# -Projekts, um Konflikte zu vermeiden.

Andere Tipps

Nun, Sie könnten es versuchen:

  • Wickeln Sie die Verwendung von injized_method in einen Versuch ein.
  • Schreiben Sie ein Skript, das alle Python-Code herausfiltert, die zur Importzeit ausgeführt werden, und führt das Ergebnis in Sphinx.
  • Du könntest ... ok, ich habe keine Ideen mehr. :)

Vielleicht könnten Sie injected_method als leere Funktion definieren, damit die Dokumentation funktioniert. Sie müssen sicherstellen, dass die Definition von Injected_method, die Sie injizieren, nach dem neuen Injected_method -Stub erfolgt.

#By empty function I mean a function that looks like this
def injected_method():
  pass
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top