2011-01-22 12 views
13

Ho appena installato South (0.7.3, python-2.6) e completato con successo il tutorial utilizzando l'interprete python. Significa che sono in grado di creare un modello e migrarlo senza errori, quindi South sembra funzionare bene nella shell python. Ho usato un db sqlite3 per il tutorial.PyDev in Eclipse non riconosce db.add_column da South

Tuttavia, quando apro il mio progetto in Eclipse, Eclipse non riconosce le funzioni associate a db nelle cartelle di migrazione: file 0001_initial.py e 0002_auto__add_field_knight_dances_whenever_able.py. Ottengo gli errori specifici (Variabile non definita dall'importazione: add_column, create_table, delete_column, delete_table, send_create_signal)

Fino all'installazione di South, Eclipse ha funzionato correttamente per creare applicazioni django. Ho puntato l'interprete PyDev nella cartella sud sotto i pacchetti del sito (C: \ python26 \ Lib \ site-packages \ south-0.7.3-py2.6.egg) (Altre librerie come Django e django-picklefield funzionano bene.)

ho fatto un semplice script dal progetto Eclipse e dal guscio pitone ed entrambi sembrano avere la stessa del sys.path

Eventuali suggerimenti su come ottenere l'interprete Python Eclipse più felice?

+1

Vai a questa domanda relativa: http://stackoverflow.com/questions/3605180/tell-pydev-to-exclude- un intero pacchetto dall'analisi – Etienne

risposta

4

Uno (lontano dall'ideale) soluzione è mettere #@PydevCodeAnalysisIgnore in tutte le migrazioni. Se ne hai solo fino ad ora, puoi farlo manualmente. Ho avuto cumuli, così mi sono imbattuto il seguente comando di shell, che aggiungerà il commento come seconda riga di ogni file:

find . | grep '^.\/[a-z]*\/migrations\/.*\.py$' | xargs -I FILE sed -i ' 
1 a\ 
#@PydevCodeAnalysisIgnore 
' FILE 

(Nota: Probabilmente si dovrebbe eseguire find . | grep '^.\/[a-z]*\/migrations\/.*\.py$' per vedere quali file sed modificherà, prima di . correre l'intero comando È anche possibile eseguire l'intero comando senza la bandiera -i per vedere i cambiamenti stessi)

3

Ecco una soluzione se si desidera modificare south/db/__init__.py:.

--- db/__init__.py.original 2010-12-02 03:00:26.000000000 +1300 
+++ db/__init__.py 2011-05-02 14:07:19.353636710 +1200 
@@ -72,5 +72,9 @@ 
    ) 
    sys.exit(1) 

-# Finally, to make old migrations work, keep 'db' around as the default database 
+# Finally, to make old migrations work, keep 'db' around as the default 
+# database. We're setting it explicitly to the generic operations first to 
+# avoid pydev errors. 
+from south.db import generic 
+db = generic.DatabaseOperations(DEFAULT_DB_ALIAS) 
db = dbs[DEFAULT_DB_ALIAS] 
+0

Hai inviato questa richiesta come richiesta di trasferimento a South? C'è un problema su questo argomento? Mi piacerebbe davvero vederlo risolto senza dover fare confusione con le impostazioni o le fonti del mio editor. –

+0

Considererei questo più un errore PyDev di qualcosa che South dovrebbe risolvere. Se avessi ancora usato Eclipse, probabilmente ci proverei, dato che mi ha sempre infastidito. Sentiti libero di usarlo come base per la tua richiesta di pull. – SmileyChris

+0

fyi: richiesta pull respinta "Temo che non avrò intenzione di commettere una correzione puramente a vantaggio del linter/introspector di pydev - è un cattivo precedente." http://south.aeracode.org/ticket/788 – Cheekysoft

19

Oppure, se non si intende modificare i file di origine sud o ritoccare tutti i file di migrazione, è possibile considerare i metodi specifici del sud come globali nell'analisi del codice pydev. È possibile modificare questo in:

Preferences > PyDev > Editor > Code Analysis > Undefined 

Mia lista eccezioni sono:

_,tr,create_table,send_create_signal,delete_table,add_column,delete_column,alter_column,create_unique,create_index,delete_index,delete_unique,shorten_name,rename_column,execute 
+3

+1 per non scherzare con sorgenti di pacchetti o file generati – RickyA

+1

Ho anche rilevato il problema con 'delete_unique' e l'ho aggiunto alla tua lista. –

+0

Ho anche rilevato il problema con 'shorten_name' – Caumons

Problemi correlati