导入错误:无法导入名称发布

2024-05-23 18:24:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我真的被困在这部分。你能帮我吗?

谢谢


Tags: 文件版本应用程序most错误callexefile
3条回答

像这样试试:

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

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

我猜你用的是wxPython的版本,也就是>= 2.8.11.0?如果是,则wx.lib.pubsub包已更改。This page描述了这些更改。在wxPython邮件列表here上也有一个线程讨论这个问题。

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

The much preferable alternative (ie no hacks!) if you can hack it (sorry!) is to use the same messaging protocol as v1, but in latest API, this is called "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

and replace any occurence of "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。如果你的项目不是太大,你也许可以在不改变太多的情况下度过难关。

我使用了一个示例代码,该代码使用wx.lib.pubsub进行研究,也遇到了这个问题。

为了简单地解决这个问题,我改了行:

from wx.lib.pubsub import Publisher as pub

致:

from wx.lib.pubsub import pub

接受的答案有一些链接仍然使其正确,但是为了简单起见,我添加了这个解决方案,因为接受的解决方案有点混乱。

相关问题 更多 >