Eclipse Pydev“;“从导入中取消定义变量”;在Ubunutu而不是Windows上使用pygame 简而言之

Eclipse Pydev“;“从导入中取消定义变量”;在Ubunutu而不是Windows上使用pygame 简而言之,eclipse,windows-7,ubuntu,pydev,pygame,Eclipse,Windows 7,Ubuntu,Pydev,Pygame,在Ubuntu11.10上,对于pygame库,pydev报告“来自导入的未定义变量”。在Windows7上,一切正常。在这两种平台上,代码都能正常工作 这与(和a)的错误相同。删除并重新添加我的解释器并没有改变任何事情。我还尝试将pygame作为一个强制的内置库,但它没有改变任何东西(我检查了pygame是否在系统PYTHONPATH中) 配置 在Ubuntu和Windows上,我都使用EclipseIndigo和Python3.2 在Ubuntu上,我使用: Ubuntu 11.10 Pyg

在Ubuntu11.10上,对于pygame库,pydev报告“来自导入的未定义变量”。在Windows7上,一切正常。在这两种平台上,代码都能正常工作

这与(和a)的错误相同。删除并重新添加我的解释器并没有改变任何事情。我还尝试将pygame作为一个强制的内置库,但它没有改变任何东西(我检查了pygame是否在系统PYTHONPATH中)

配置 在Ubuntu和Windows上,我都使用EclipseIndigo和Python3.2

在Ubuntu上,我使用:

Ubuntu 11.10
  • Pygame 1.9.2根据Pygame Hg回购协议重新编译。构建和安装后,site packages/pygame文件夹包含一组.so和.py文件。
  • 在Windows7上:

    带SP1的Windows 7 pro
  • Pygame 1.9.2从开始。MSI在站点包/pygame文件夹中创建了一组.pyd和.py文件。
  • 我知道静态分析不能进入内部。所以Ubuntu上的文件。我也知道Python是一种动态语言。因此pydev具有静态分析固有的局限性。但是Windows7上的pydev设法链接.pyd文件中的类,这些文件是动态libs。为什么?我怎样才能让它在Ubuntu上工作呢

    提示? 使用Ubuntu中的上述代码,我可以按住ctrl键(或f3键)点击pygame包,但不能点击pygame.locals。在Windows上,我可以同时访问这两个窗口

    import pygame
    import pygame.locals
    from pygame.locals import *
    
    现在我可以去pygame.locals了。我想这有助于pydev了解“期望”什么,因为locals.py实际上存在于site packages/pygame文件夹中。但我不想为了适应pydev而更改所有代码

    无论如何,下面这行代码在Ubuntu上仍然会引发“undefined variable from import”,但在Windows上不会

    except pygame.error:
    

    PS:如果有帮助的话,我有一台64位的联想T410,并且安装了所有64位的设备。

    我刚刚在Ubuntu上测试了它,它似乎对我来说工作正常。。。您能否发布以下内容来帮助您解决此问题:

    1。如果您添加了“pygame”,请将其从强制内置中删除(此特定用例不需要它…通过查看其结构,静态分析器似乎能够正确处理它,因此pygame中的.so文件将由shell自动处理,因此,无需显式处理它)

    2。具有以下功能的程序:

    import sys
    print '\n'.join(sorted(sys.path))
    import pygame.locals
    print pygame
    print pygame.locals
    
    当您从PyDev启动它时,它给您的输出是什么?(我很想知道pygame的完整路径,它是否会在运行时抛出ImportTerror,以及您的完整PYTHONPATH)


    3。您的错误日志中有错误吗?(PyDev能够内省.so文件,但它将启动一个单独的python shell并通过套接字与之通信,因此,可能有什么东西在阻止它)。

    感谢您的帮助:-)我制作了一个新的PyDev项目,其中包含您的程序。我从强制内置中删除了pygame。您的程序输出:
    /home/tho/.eclipse/org.eclipse.platform_3.7.0_155965261/plugins/org.python.pydev.debug_2.3.0.2011121518/pysrc/home/tho/workspace/test/src/home/tho/workspace/test/src/usr/local/lib/python3.2/usr/local/lib/dynload/usr/local/plat-linux3/usr/local/python3.2/site/usr/local/lib/python32.zip。。。。。。。。。。然后,在from pygame.base import*ImportError:libSDL-1.2.so.0:无法打开共享对象文件:错误日志中没有这样的文件或目录
    错误:就PyDev而言,看到那些截图的链接:看起来错误在你的pygame编译中。。。(因为导入失败)有什么原因你没有直接从ubuntu获得这个吗?(例如:删除编译并执行sudo apt get install python pygame之类的操作。注意:我现在不在Linux上,因此包名可能会有点不同,尤其是在python 3上).Ah如果这个问题不涉及pydev,而是涉及编译pygame,那么我很抱歉浪费了您的时间:/apt get只有pygame for python2.6(Ubuntu11.11上的默认python)。我按照老师的指示去做。我将重新安装pygame,仔细检查编译错误(尽管我安装pygame时没有发现任何错误),然后再与您联系。
    import sys
    print '\n'.join(sorted(sys.path))
    import pygame.locals
    print pygame
    print pygame.locals