2011-02-08 21 views
7

Sto lavorando su diversi progetti Jython usando librerie scritte in Java. Mi piacerebbe creare una buona documentazione con Sphinx grazie all'estensione dell'autodoc. Tuttavia quando provo a generare il codice HTML, ottengo errori perché autodoc non riesce a trovare le librerie scritte in Java:Come creare documentazione basata su Sphinx in un progetto Jython?

sphinx-build -b html -d _build/doctrees . _build/html 
Running Sphinx v1.0.5 
loading pickled environment... done 
building [html]: targets for 1 source files that are out of date 
updating environment: 0 added, 1 changed, 0 removed 
reading sources... [100%] index 

/Users/myName/myJythonProject/doc/index.rst:14: (WARNING/2) 
autodoc can't import/find module 'myJythonProject', it reported error: 
"global name 'PoolManager' is not defined", 
please check your spelling and sys.path 

dove poolmanager è una classe Java.

Qualcuno potrebbe aiutarmi a risolvere questo problema?

+0

Sry, non hanno usato Jython prima, ma avete provato la creazione di un wrapper che intrappola le invocazioni 'python' in modo tale che, quando Sphinx chiama 'python' e finisce per chiamare il tuo wrapper che chiama jython? L'altra cosa è che per il mio progetto ho dovuto eseguire il wrapping di alcuni dei miei 'import's e del codice appositamente per Sphinx. Puoi controllare una variabile d'ambiente o qualche altra variabile globale prima di importare una libreria jython? In alternativa, puoi creare librerie fittizie di python che hanno la stessa interfaccia delle librerie jython che stai usando e importare questi dummy mentre esegui Sphinx con [cont] –

+0

manipolando la variabile di ambiente 'PYTHON_PATH' o' sys.path'. –

+0

Grazie per la risposta. Proverò ciò che hai proposto. –

risposta

6

La Sfinge può essere utilizzata per documentare i progetti Jython, ma autodoc non funziona per il codice scritto in Java. La funzione autodoc importa e ispeziona i moduli Python. Non c'è supporto per fare lo stesso con le classi Java.

L'implementazione di autodoc (o qualcosa di simile) per Java sembra fattibile, ma qualcuno deve offrirsi volontario per farlo. Vedi questo commento dello scrittore Sphinx Georg Brandl: http://www.mail-archive.com/[email protected]/msg03162.html.

Ho trovato alcune informazioni su a proposed GSoC 2010 project con l'obiettivo di implementare il supporto di più lingue per autodoc. Ma secondo this blog post, il progetto non è stato completato. Lo sviluppatore ha scelto di lavorare su un altro progetto GSoC.

Il sphinx-contrib repository non contiene nulla correlato a autodoc.


Aggiornamento

C'è una nuova estensione chiamata Sfinge javasphinx che sembra interessante. Non ho usato questa estensione, ma secondo the documentation, può produrre fonti di riposo dal codice Java:

Lo strumento javasphinx-apidoc è il contrappunto alla sphinx-apidoc strumento all'interno del dominio di Java. Può essere utilizzato per generare una sorgente di aggiornamento dal codice sorgente Java esistente che è stato contrassegnato con commenti in stile Javadoc. Il reST generato da viene quindi elaborato insieme alla documentazione scritta a mano da Sphinx.

javasphinx fa uso di un'altra libreria denominata javalang.

pacchetti PyPI:

+0

Grazie per questa risposta dettagliata. Questo conferma quello che pensavo. Dovrò trattare senza autodoc fino a quando non verrà implementato. –

Problemi correlati