2011-09-07 8 views
5

sono un paio di mesi che ho iniziato lo sviluppo in Python - avendo me stesso uno sfondo C# e Java.Fare riferimento a una libreria esterna in un progetto appengine Python, utilizzando Pydev/Eclipse

Attualmente sto lavorando su 2 diverse applicazioni python/appengine e, come spesso accade in questi casi, entrambe le applicazioni condividono codice comune, quindi mi piacerebbe refactoring e spostare il codice comune/generico in un posto condiviso.

In Java o C# vorrei solo creare un nuovo progetto di libreria, spostare il codice nel nuovo progetto e aggiungere un riferimento alla libreria dai progetti principali.

Ho provato lo stesso in Python, ma non riesco a farlo funzionare.

Sto usando Eclipse con il plugin Pydev.

Ho creato un nuovo progetto Pydev, spostato il codice, e tentarono di:

  • riferimento al progetto della libreria dalle principali progetti (utilizzando Proprietà del progetto -> riferimenti del progetto)
  • aggiungere la libreria cartella della cartella src nei progetti principali (in questo caso ho un errore - presumo che non sia possibile lasciare i limiti del progetto quando si aggiunge una cartella sorgente esistente)
  • aggiungi come libreria esterna (praticamente lo stesso di come le librerie google sono definite , usando Proprietà -> Librerie esterne)
  • Importa come collegamento (da Import -> File System e abilitazione "creare collegamenti in spazio di lavoro")

In tutti i casi sono in grado di fare riferimento al codice della libreria, mentre in via di sviluppo, ma quando inizio il debug, lo sviluppo appengine server genera un'eccezione perché non riesce a trovare ciò che ho spostato in un progetto di libreria separato.

Naturalmente ho cercato una soluzione molto, ma sembra che nessuno ha sperimentato lo stesso problema - o forse nessuno non ha bisogno di fare lo stesso :)

La soluzione più vicina ho stato in grado di trovare è aggiungere uno script ant per comprimere i sorgenti della libreria e copiare nel progetto di destinazione - ma in questo modo il debug è un problema, dato che non riesco a entrare nel codice della libreria.

Qualche suggerimento?

Inutile dire che la soluzione proposta deve tener conto del fatto che il codice della libreria deve essere inclusa nel processo di caricamento di AppEngine ...

Grazie

risposta

4

Il dev_appserver e l'ambiente di produzione non lo fanno avere qualsiasi concetto di progetti o librerie, quindi è necessario strutturare la tua app in modo che tutte le librerie necessarie siano sotto la radice dell'applicazione. Il modo più semplice per farlo, di solito, è collegarli come sottodirectory, o nel caso peggiore, per copiarli (o, usando il controllo della versione, renderli sotto-repository).

Come le mappe per le operazioni nel tuo IDE dipendono dall'IDE, ma in generale, è probabilmente più semplice ottenere l'app strutturata come se ne hai bisogno su disco, e lavorare indietro per ottenere il tuo IDE impostato come ti piace esso.

+0

Grazie Nick - ha seguito il tuo consiglio spostando il codice nella cartella src, quindi aggiungendolo a un repository svn separato. Ora devo solo importarlo nell'altro progetto e dovrei essere ok. – Antonio

Problemi correlati