PyDev в Eclipse не распознает db.add_column с юга

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

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

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

Я запустил простой скрипт из проекта eclipse и из оболочки python, и оба, похоже, имеют одинаковые sys.path

Есть какие-нибудь советы, как сделать интерпретатор Python Eclipse более счастливым?


person crcarlson    schedule 22.01.2011    source источник
comment
См. Этот связанный вопрос: stackoverflow.com/questions/3605180/   -  person Etienne    schedule 25.01.2011


Ответы (3)


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

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

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

person Leigh Brenecki    schedule 11.03.2011

Или, если вы не хотите беспорядочно менять исходные файлы на юг или ретушировать все файлы миграции, вы можете рассматривать методы, специфичные для юга, как глобальные переменные при анализе кода 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
person goldstein    schedule 24.07.2011
comment
Я также воспользовался этой проблемой с delete_unique и добавил это в ваш список. - person Henrik Heimbuerger; 12.03.2013
comment
Я также столкнулся с этой проблемой с shorten_name - person Caumons; 11.12.2014
comment
Я сожалею, что у меня есть только один голос плюс. Я также обнаружил, что необходимо добавить следующие термины: rename_column,execute - person Mark Chackerian; 29.04.2015
comment
@Caumons, Марк, я обновил ответ вашими предложениями, ура. - person goldstein; 30.04.2015

Вот обходной путь, если вы хотите отредактировать 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]
person SmileyChris    schedule 02.05.2011
comment
Вы отправили это как запрос на перенос на Юг? Есть вопросы по этой теме? Мне бы очень хотелось, чтобы это было исправлено, без необходимости возиться с настройками моего редактора или источниками. - person Henrik Heimbuerger; 12.03.2013
comment
Я бы счел это скорее ошибкой PyDev, чем чем-то, что следует исправить South. Если бы я все еще использовал Eclipse, я бы, вероятно, попробовал, поскольку это всегда меня беспокоило. Не стесняйтесь использовать это как основу своего собственного запроса на вытягивание. - person SmileyChris; 22.03.2013
comment
к сведению: запрос на вытягивание отклонен. Боюсь, что я не собираюсь фиксировать исправление исключительно в интересах линтера / интроспектора pydev - это создает плохой прецедент. south.aeracode.org/ticket/788 - person Cheekysoft; 03.02.2014