在使用pydev中的wxPython时导入出现未定义变量错误

17

我刚下载了 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安装是新鲜的。


我也遇到了同样的问题。除了等待开发人员修复之外,是否有其他解决方案可用? - user297247
我曾经遇到同样的问题,但当我更新到PyDev 1.5.6时,问题消失了。 - user290778
6个回答

40
这种情况发生在我身上。我曾安装了PyDev并对其进行了配置,然后继续做其他事情。几个月后,我安装了wxPython,并遇到了同样的问题。在eclipse中解决这个问题很简单:
Window -> Preferences -> Pydev -> Interpreter - 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
但我认为这应该是一个相当常见的解决方案。

注意:如果你使用的是OsX系统,wxpython安装器会将wxpython安装在不同的位置。在添加“/usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.6/site-packages/wx-2.8-mac-unicode”之后,它可以正常工作。谢谢! - christianbrodbeck
工作正常,但在我系统上,当我几天后重新开始项目时,问题会再次出现。'N3nn' 提供的“from wx import wx #@UnresolvedImport”解决方案效果最佳。 - Cees Meijer

7

当您在PyDev中设置解释器时,PyDev会查找引用。

Window -> Preferences -> Pydev -> Interpreter - Python
如果在您首次设置解释器时,wxPython未在site-packages目录中,则编辑器查找函数将不知道对wx对象和名称的引用。要解决此问题,请从中删除解释器。
Window -> Preferences -> Pydev -> Interpreter - Python

然后选择“新建”。再次添加Python安装并按应用。此时,Pydev将重新导入所有的site-package对象,并应填充查找字典。您需要重新启动Eclipse才能使更改生效。


3
#import  wx 
from    wx import wx #@UnresolvedImport

将会修复。


3

3

尝试一下

wx = wx

不要问为什么。这种方法(我在尝试将问题分解成更小的部分时发现的)似乎可以解决wx未定义变量的问题。


3

一些较新的pydev版本(约在2010年1月左右)很难跟踪导入的名称。可能只是小问题。

如果这个问题仍然存在,请向 aptana appcelerator 报告错误,尽管他们可能已经知道了。

当我使用最近下载的软件包时,会出现这个问题,但最终错误会消失。我最近的问题是在下载pygame(约在2010年1月左右)后出现的。

编辑

由于人们对我的答案进行了负面评价,我假设是因为信息过时或者appcelerator收购了aptana。我已经将我的答案修改了,我已经将近两年没有使用Eclipse的pydev了,现在情况可能有所不同。


我不认为这是一个错误,尽管它可能在一月份存在过。请看下面我的回答。 - oob
使用pydev 1.5.6.2010033101,今天我第一次尝试包含networkx时仍然遇到了导入错误。您在答案中提到的过程是我自2010年1月以来一直在使用的方法来解决这个问题。偶尔简单地重新启动Eclipse就足够了(例如,在2010年1月使用pygame时),但解释器的删除/添加每次都有效。 - user44484
此外,我记得在 Aptana 网站上读到过建议使用您下面列出的删除/添加方法作为解决方案。 - user44484

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接