13

我刚刚安装了 South (0.7.3, python-2.6) 并使用 python 解释器成功完成了教程。这意味着我能够创建一个模型并在没有任何错误的情况下迁移它,因此 South 在 python shell 中似乎工作正常。我在本教程中使用了 sqlite3 db。

但是,当我在 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)

在 South 安装之前,Eclipse 一直可以很好地创建 django 应用程序。我确实将 PyDev 解释器指向了 site-packages (C:\python26\Lib\site-packages\south-0.7.3-py2.6.egg) 下的南文件夹(那里的其他库,如 Django 和 django-picklefield 工作美好的。)

我从 eclipse 项目和 python shell 运行了一个简单的脚本,两者似乎都有相同的 sys.path

关于让 Eclipse python 解释器更快乐的任何提示?

4

3 回答 3

19

或者,如果您不想弄乱更改 south 源文件或修改所有迁移文件,您可以考虑将 south 特定方法作为 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
于 2011-07-24T20:14:13.297 回答
4

一种(远非理想的)解决方案是进行#@PydevCodeAnalysisIgnore所有迁移。如果到目前为止您只有几个,您可以手动执行此操作。我有一堆,所以我运行了以下 shell 命令,它将添加注释作为每个文件的第二行:

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

(注意:在运行整个命令之前,您可能应该运行find . | grep '^.\/[a-z]*\/migrations\/.*\.py$'以查看哪些文件会更改。您也可以运行不带标志的整个命令以查看更改本身。)sed-i

于 2011-03-11T04:33:37.993 回答
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]
于 2011-05-02T02:10:25.013 回答