在pydev中使用wxPython时导入产生未定义变量

17 投票
6 回答
15858 浏览
提问于 2025-04-15 18:30

我刚下载了wxPython,并且在这里运行了一些示例程序这里。但是,每当我使用wx.*中的变量时,都会出现“未定义的变量导入错误”。

比如,下面这个程序在第1行、第4行、第8行和第5行的两处地方产生了五个错误:

import wx
class MyFrame(wx.Frame):
    """ We simply derive a new class of Frame. """
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(200,100))
        self.control = wx.TextCtrl(self, style=wx.TE_MULTILINE)
        self.Show(True)
app = wx.App(False)
frame = MyFrame(None, 'Small editor')
app.MainLoop()

不过,这个程序还是能正常编译和运行。我没有对pydev或eclipse做什么重要的修改,而且wxPython的安装也是全新的。

6 个回答

7

当你在设置解释器时,PyDev 会找到相关的引用。

Window -> Preferences -> Pydev -> Interpreter - Python

如果在你第一次设置解释器时,wxPython 没有出现在你的 site-packages 目录里,那么编辑器就无法识别 wx 对象和名称。要解决这个问题,你需要从

Window -> Preferences -> Pydev -> Interpreter - Python

中移除解释器,然后选择新建。再重新添加 Python 安装,点击应用。这个时候,PyDev 会重新导入所有的 site-package 对象,并更新查找字典。你可能需要重启 Eclipse 才能让这些更改生效。

40

我也遇到过这个问题。我安装了PyDev并进行了配置,然后就顺利使用了。几个月后,我又安装了wxPython,结果又出现了同样的问题。解决这个问题的一个简单方法是在Eclipse里操作:

窗口 -> 首选项 -> Pydev -> 解释器 - Python

只需要删除默认的解释器,然后添加一个新的(可以是之前用的那个)。Pydev/Eclipse会自动在你的Python安装目录里搜索,并把正确的路径添加到你的PYTHONPATH中。我重启了一下,问题就解决了。我注意到它添加了

C:\Python26\lib\site-packages\wx-2.8-msw-unicode

所以你也可以直接把那个路径添加到PYTHONPATH里,这样就不用按照上面的步骤操作了,前提是那个路径是你安装目录的位置。

顺便说一下,我使用的是:

  1. Eclipse Helios
  2. Pydev 1.6.2.2010090812
  3. Python 2.6
  4. wxPython2.8-win32-unicode-2.8.11.0-py26

不过我觉得这个方法应该适用于大多数类似的问题。

3

一些较新的pydev版本(大约在2010年1月)在追踪导入的名称时会遇到困难。这可能没什么大不了的。

如果这个问题仍然存在,建议把这个bug报告给aptana appcelerator,不过他们可能已经知道这个问题了。

我在使用最近下载的包时会遇到这个问题,最后这些错误会消失。我最近遇到的问题是在下载pygame之后(大约在2010年1月)

编辑

我更新了上面的回答,因为有人给我投了反对票,我猜是因为信息过时了,或者是因为appcelerator收购了aptana。我已经快两年没用过pydev和Eclipse了,情况可能现在有所不同。

撰写回答