2011-03-21 48 views
8

我成功創建了我的應用程序的可執行版本(Py2exe,Pyinstaller)。當我嘗試從.EXE應用程序,我得到一個錯誤日誌文件如下:ImportError:無法導入名稱發佈者

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

我真的卡在這個部分。你能幫我嗎?

感謝

+2

未找到節時會引發[NoSectionError](http://docs.python.org/library/configparser.html#ConfigParser.NoSectionError)異常。你確認你有一個叫做'locations'的部分嗎? – user225312 2011-03-21 06:41:17

+0

我通過將與紙漿相關的代碼集成到我的主.pyw模塊中解決了這個問題。所以現在只有一個python模塊。但是這次我得到了一個新的錯誤,如上所述。 – Shansal 2011-03-21 09:36:48

+2

請描述如何從''CreateAS.pyw''導入''Publisher'',其中''Publisher'位於哪裏以及它的用途。 – 2011-03-23 06:58:21

回答

12

我猜您正在使用一個版本的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) 

您現在應該能夠建立使用發佈 - 訂閱新版本的可執行文件,但與舊的api。您可能還想查看pubsub的新v3 api。如果你的項目不是太大,你可以在不改變太多的情況下獲得。

+1

在setuparg1之後導入發佈服務器不起作用,而使用setupv1嘗試它。但是,在編譯時我仍然得到ImportError。 – 2011-06-27 14:39:50

4

嘗試這樣的:

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

然後:由Publisher.

+3

這個答案沒有提供任何比接受答案更新的東西,這也是一個超過三年的問題。 – meskobalazs 2015-02-04 09:56:09

2

取代Publisher()任何occurence我使用的是使用wx.lib.pubsub從學習過這個問題也來了一個示例代碼。

要解決這個問題簡單地說,我只是改了行:

from wx.lib.pubsub import Publisher as pub 

要:

from wx.lib.pubsub import pub 

接受的答案已經鏈接,仍然作出正確的,但爲了簡單起見,我已經增加了這個解決方案,因爲接受的解決方案有點混亂。

+0

這是讓舊程序快速運行的最短途徑! – 2017-01-10 18:05:26

相關問題