ImportError:无法导入名称Publisher

时间:2011-03-21 06:20:33

标签: python executable py2exe

我成功创建了应用程序的可执行版本(Py2exe,Pyinstaller)。当我尝试从.exe运行应用程序时,我在日志文件中收到如下错误:

Traceback (most recent call last): File "CreateAS.pyw", line 8, in <module> ImportError: cannot import name Publisher

我真的被这部分困住了。你能救我一下吗?

由于

3 个答案:

答案 0 :(得分:13)

我猜你使用的wxPython版本是>= 2.8.11.0?如果是这样,wx.lib.pubsub包已更改。 This page描述了这些变化。 wxPython邮件列表here上还有一个讨论此问题的帖子。

为了使这一切在我的项目中完成,我做了以下描述here,它是上述邮件列表线程的一部分。我总结如下:

  

更可取的选择(即没有   黑客!)如果你能破解它(对不起!)   是使用相同的消息传递协议   作为v1,但在最新的API中,这是   叫做“arg1”:

# only in app's startup  module   
from wx.lib.pubsub import setuparg1   
# in all modules that use pubsub 
from wx.lib.pubsub import pub as Publisher
     

并替换"Publisher()." by "Publisher."

的任何出现

然后在我的setup.py脚本中,我必须将以下内容添加到选项中:

options = {
    "py2exe": {"packages": ['wx.lib.pubsub']}
}
setup(data_files=data_files,
      windows=[
              {'script': 'btpos.py'],
               options=options)

您现在应该能够使用新版本的pubsub构建可执行文件,但使用旧的api。您可能还想查看pubsub的新v3 api。如果你的项目不是太大,你可以顺利过关而不会改变太多。

答案 1 :(得分:4)

尝试这样:

from wx.lib.pubsub import setuparg1
from wx.lib.pubsub import pub as Publisher

然后:用Publisher()

替换Publisher.的任何出现

答案 2 :(得分:2)

我正在使用一个使用wx.lib.pubsub进行学习的示例代码,并且也遇到了这个问题。

简单地解决这个问题,我只是更改了一行:

from wx.lib.pubsub import Publisher as pub

要:

from wx.lib.pubsub import pub

已接受的答案中的链接仍然是正确的,但为了简单起见,我已添加此解决方案,因为已接受的解决方案有点令人困惑。