ImportError:无法导入名称Publisher

Sha*_*sal 9 python executable py2exe

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

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

我真的被这部分困住了.你能救我吗?

谢谢

Cas*_*sey 14

我猜你正在使用一个版本的wxPython的>= 2.8.11.0?如果是这样,wx.lib.pubsub包裹已经改变.此页面描述了这些更改.也有一个线程wxPython的邮件列表,这里是谈论这个.

为了使这一切在我的项目中工作,我在这里描述了以下邮件列表线程的一部分.我总结如下:

更好的选择(即没有黑客!),如果你可以破解它(抱歉!)是使用与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
Run Code Online (Sandbox Code Playgroud)

并替换任何出现的 "Publisher()." by "Publisher."

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

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

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


小智 5

试试这样:

from wx.lib.pubsub import setuparg1
from wx.lib.pubsub import pub as Publisher
Run Code Online (Sandbox Code Playgroud)

然后:替换任何出现的Publisher()Publisher.

  • 这个答案在接受的答案上没有提供任何新的东西,这也是一个超过三年的问题。 (3认同)