PyDev в Eclipse не распознает db.add_column с Юга
Я только что установил Юг (0.7.3, python-2.6) и успешно завершил учебник, используя интерпретатор python. Это означает, что я могу создать модель и перенести ее без каких-либо ошибок, поэтому, кажется, Юг отлично работает в оболочке python. Я использовал sqlite3 db для учебника.
Однако, когда я открываю свой проект в Eclipse, Eclipse не распознает функции, связанные с db в папках переноса: 0001_initial.py и 0002_auto__add_field_knight_dances_whenever_able.py файлы. Я получаю конкретные ошибки (переменная Undefined из импорта: 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 работают хорошо.)
Я запустил простой script из проекта eclipse и из оболочки python, и оба из них имеют одинаковый sys.path
Любые советы по получению переводчика Python Eclipse более счастливыми?
Ответы
Ответ 1
Одно (далеко не идеальное) решение состоит в том, чтобы поместить #@PydevCodeAnalysisIgnore
во все ваши миграции. Если у вас есть только несколько, вы можете сделать это вручную. У меня были кучи, поэтому я запустил следующую команду оболочки, которая добавит комментарий в качестве второй строки каждого файла:
find . | grep '^.\/[a-z]*\/migrations\/.*\.py$' | xargs -I FILE sed -i '
1 a\
#@PydevCodeAnalysisIgnore
' FILE
(Примечание. Вероятно, вы должны запустить find . | grep '^.\/[a-z]*\/migrations\/.*\.py$'
, чтобы увидеть, какие файлы sed
будут изменены, перед запуском всей команды. Вы также можете запустить целую команду без флага -i
, чтобы просмотреть сами изменения.)
Ответ 2
Или, если вы не хотите путать с изменением южных исходных файлов или ретушировать все ваши файлы миграции, вы можете рассматривать южные специфические методы как глобальные переменные в анализе кода 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
Здесь обходной путь, если вы хотите отредактировать 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]