Eclipse中的PyDev无法识别来自South的db.add_column

crc*_*son 13 eclipse django pydev django-south

我刚刚安装了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)

直到南方安装,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解释器更快乐的任何提示?

gol*_*ein 19

或者,如果您不想更改南方源文件或修改所有迁移文件,可以将南方特定方法视为pydev代码分析中的全局方法.你可以改变这个:

Preferences > PyDev > Editor > Code Analysis > Undefined
Run Code Online (Sandbox Code Playgroud)

我的例外清单是:

_,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
Run Code Online (Sandbox Code Playgroud)

  • +1不会搞乱包源或生成的文件 (3认同)

Lei*_*cki 4

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

find . | grep '^.\/[a-z]*\/migrations\/.*\.py$' | xargs -I FILE sed -i '
1 a\
#@PydevCodeAnalysisIgnore
' FILE 
Run Code Online (Sandbox Code Playgroud)

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