2011-01-22 6 views
13

Acabo de instalar South (0.7.3, python-2.6) y completé con éxito el tutorial utilizando el intérprete de python. Lo que significa que puedo crear un modelo y migrarlo sin ningún error, por lo que South parece estar bien en el shell de python. Usé un sqlite3 db para el tutorial.PyDev en Eclipse no reconoce db.add_column desde South

Sin embargo, cuando abro mi proyecto en Eclipse, Eclipse no reconoce las funciones asociadas con db en las carpetas de migración: archivos 0001_initial.py y 0002_auto__add_field_knight_dances_whenever_able.py. Obtengo los errores específicos (variable no definida de import: add_column, create_table, delete_column, delete_table, send_create_signal)

Hasta la instalación en el sur, Eclipse ha funcionado bien para crear aplicaciones django. Apunté el intérprete de PyDev a la carpeta sur bajo site-packages (C: \ python26 \ Lib \ site-packages \ south-0.7.3-py2.6.egg) (Otras bibliotecas allí, como Django y django-picklefield funcionan bien.)

me corrió un simple script del proyecto Eclipse y de la cáscara de pitón y ambos parecen tener

Cualquier extremidad de la misma sys.path sobre cómo obtener el intérprete de python Eclipse más feliz?

+1

Ver esta pregunta relacionada: http://stackoverflow.com/questions/3605180/tell-pydev-to-exclude- an-whole-package-from-analysis – Etienne

Respuesta

4

Uno (lejos de ideal) solución es poner #@PydevCodeAnalysisIgnore en todas sus migraciones. Si solo tiene algunos hasta ahora, puede hacerlo manualmente. Tenía montones, así que me encontré con el comando shell siguiente, que agregará el comentario en que la segunda línea de cada archivo:

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

(Nota: probablemente debería funcionar find . | grep '^.\/[a-z]*\/migrations\/.*\.py$' para ver qué archivos sed alterará, antes . funcionando todo el comando también puede ejecutar el comando entero sin la bandera -i para ver los cambios en sí mismos)

3

Aquí hay una solución si desea editar 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

¿Ha enviado esto como una solicitud de extracción a South? ¿Hay algún problema sobre este tema? Realmente me gustaría ver que esto se solucione sin tener que meterme con la configuración o las fuentes de mi editor. –

+0

Consideraría esto más un error de PyDev que algo que South debería solucionar. Si aún utilizo Eclipse, probablemente lo intente, ya que esto siempre me molestaba. Siéntase libre de usar esto como la base de su propia solicitud de extracción. – SmileyChris

+0

fyi: solicitud de extracción rechazada "Me temo que no voy a cometer una corrección puramente en beneficio del linter/introspector de pydev, sino que sienta un mal precedente". http://south.aeracode.org/ticket/788 – Cheekysoft

19

O, Si no desea entrometerse en el cambio de archivos de origen del sur o retocar todos sus archivos de migración, puede considerar los métodos específicos del sur como globales en el análisis de código pydev. Puede cambiar esto en:

Preferences > PyDev > Editor > Code Analysis > Undefined 

Mi lista de excepciones son:

_,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 por no meterse con fuentes de paquetes o archivos generados – RickyA

+1

También encontré este problema con 'delete_unique' y lo agregué a su lista. –

+0

También encontré este problema con 'shorten_name' – Caumons

Cuestiones relacionadas