2011-01-22 7 views
13

Я только что установил Юг (0.7.3, python-2.6) и успешно завершил учебник с использованием интерпретатора python. Это означает, что я могу создать модель и перенести ее без каких-либо ошибок, поэтому, кажется, Юг отлично работает в оболочке python. Я использовал sqlite3 db для учебника.PyDev в Eclipse не распознает db.add_column from South

Однако, когда я открываю проект в Eclipse, Eclipse не распознает функции, связанные с db в папках переноса: 0001_initial.py и 0002_auto__add_field_knight_dances_whenever_able.py файлы. Я получаю конкретные ошибки (неопределенная переменная из импорта: add_column, create_table, delete_column, delete_table, send_create_signal)

До установки на юг Eclipse отлично работает для создания приложений django. Я указал интерпретатор PyDev в южную папку по сайтам-пакетам (C: \ python26 \ Lib \ site-packages \ south-0.7.3-py2.6.egg) (Другие библиотеки там, такие как Django и django-picklefield работают хорошо.)

Я побежал простой сценарий из проекта затмений и из питона оболочки и как представляется, имеют

Любые советы того же sys.path на получение интерпретатора Eclipse, счастливее?

+1

Смотрите этот родственный вопрос: http://stackoverflow.com/questions/3605180/tell-pydev-to-exclude- a-whole-package-from-analysis – Etienne

ответ

4

Один () от) решение должно поставить #@PydevCodeAnalysisIgnore во всех ваших миграциях. Если у вас есть только несколько, вы можете сделать это вручную. У меня было куч, поэтому я побежал следующую команду оболочки, которая будет добавить комментарий в качестве второй линии каждого файла:

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

(Примечание: Вы, вероятно, следует запустить find . | grep '^.\/[a-z]*\/migrations\/.*\.py$', чтобы увидеть, какие файлы sed будет изменять до . работает всю команду можно также выполнить всю команду без -i флага, чтобы увидеть изменения самого)

3

Вот обходной путь, если вы хотите редактировать 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

Вы отправили это в качестве запроса на тягу на Юг? Есть ли проблема по этой теме? Очень хотелось бы, чтобы это было исправлено без необходимости связываться со своими настройками или источниками редактора. –

+0

Я бы подумал об этом скорее о ошибке PyDev, чем о том, что Юг должен исправить. Если бы я все еще использовал Eclipse, я бы, вероятно, попытался, так как это всегда меня било. Не стесняйтесь использовать это как основу своего собственного запроса на тяну. – SmileyChris

+0

fyi: запрос на отклонение отклонен «Я боюсь, что я не собираюсь совершать какое-либо исправление исключительно в пользу липтера/интроспектора pydev - он создает плохой прецедент». http://south.aeracode.org/ticket/788 – Cheekysoft

19

Или, если вы не хотите испортить изменения исходных файлов на юг или ретушировать все ваши файлы миграции, вы можете рассматривать южные специфические методы как глобальные переменные в анализе кода pydev. Вы можете изменить это в:

Preferences > PyDev > Editor > Code Analysis > Undefined 

Мой список исключений являются:

_,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 для того, чтобы не возиться с источниками пакетов или сгенерированными файлами – RickyA

+1

Я также воспользовался этой проблемой с помощью 'delete_unique' и добавил это в ваш список. –

+0

Я также добавил эту проблему с 'shorten_name' – Caumons

Смежные вопросы