我成功创建了应用程序的可执行版本(Py2exe,Pyinstaller)。当我尝试从.exe运行应用程序时,我在日志文件中收到如下错误:
Traceback (most recent call last):
File "CreateAS.pyw", line 8, in <module>
ImportError: cannot import name Publisher
我真的被这部分困住了。你能救我一下吗?
由于
答案 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
已接受的答案中的链接仍然是正确的,但为了简单起见,我已添加此解决方案,因为已接受的解决方案有点令人困惑。