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":
Run Code Online (Sandbox Code Playgroud)# 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)
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.