简而言之
在 Ubuntu 11.10 上,对于 pygame 库,pydev 报告“来自导入的 undefined variable ”。在 Windows 7 上,一切都很好。在这两个平台上,代码都能正常工作。
这与 this thread 相同的错误(和 bunch of others )。删除和重新添加我的解释器并没有改变任何东西。我还尝试将 pygame 作为强制内置库包含在内,但它没有改变任何东西(我检查了 pygame 是否在系统 PYTHONPATH 中)。
配置
在 Ubuntu 和 Windows 上,我都使用 Eclipse Indigo 和 Python 3.2。
在 Ubuntu 上,我正在使用:
在 Windows7 上:
我知道静态分析不能进入 Ubuntu 上的 .so 文件。我也明白 Python 是一种动态语言。因此 pydev 具有静态分析固有的局限性。但是 Windows 7 上的 pydev 设法链接 .pyd 文件中的类,这些文件是动态库。为什么?我怎样才能让它在 Ubuntu 上运行?
提示?
import pygame
from pygame.locals import *
在 Ubuntu 中使用上面的代码,我可以 ctrl-click(或 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 ”,但在 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 的完整路径,它是否会在运行时抛出 ImportError 以及你的完整 PYTHONPATH)
3 .您的错误日志中有错误吗? (PyDev 能够自省(introspection) .so 文件,但它会启动一个单独的 python shell 并通过套接字与它通信,因此,有可能有东西在那里阻塞)。
关于eclipse - Pydev "Undefine variable from import"在 Ubuntu 上使用 pygame 而不是 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8581712/