2011-03-21 29 views
8

मैंने सफलतापूर्वक मेरे आवेदन के निष्पादन योग्य संस्करण (Py2exe, Pyinstaller) बनाया।आयात त्रुटि: नाम आयात नहीं कर सकता प्रकाशक

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

मैं वास्तव में इस हिस्से में फंस कर रहा हूँ: जब मैं .exe से अनुप्रयोग चलाने के लिए प्रयास करते हैं, मैं एक त्रुटि लॉग फ़ाइल में इस प्रकार मिलता है। क्या आप मेरी मदद कर पाएंगे?

धन्यवाद

+2

[NoSectionError] (http://docs.python.org/library/configparser.html#ConfigParser.NoSectionError) कोई अनुभाग नहीं मिलने पर अपवाद उठाया जाता है। क्या आपने पुष्टि की है कि आपके पास 'स्थान' नामक एक अनुभाग है? – user225312

+0

मैंने लुगदी से संबंधित कोड को मेरे मुख्य .pyw मॉड्यूल में एकीकृत करके इस समस्या को हल किया। तो अब केवल एक पायथन मॉड्यूल है। लेकिन इस बार मुझे ऊपर बताए अनुसार एक नई त्रुटि मिलती है। – Shansal

+2

कृपया वर्णन करें कि आपने '' CreateAS.pyw'' से 'प्रकाशक' को कैसे आयात किया है, जहां 'प्रकाशक 'स्थित है और इसका क्या उपयोग है। –

उत्तर

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) 

अब आप एक निष्पादन pubsub के नए संस्करण का उपयोग कर निर्माण करने के लिए सक्षम होना चाहिए, लेकिन पुराने एपीआई के साथ। आप पबूब के नए वी 3 एपीआई को भी देखना चाहेंगे। यदि आपकी परियोजना बहुत बड़ी नहीं है, तो आप शायद बहुत ज्यादा बदले बिना प्राप्त कर सकते हैं।

+1

setuparg1 के बाद प्रकाशक आयात करना काम नहीं करता है, जबकि setupv1 के साथ इसे आजमा रहा है। हालांकि, दोनों मामलों में संकलन करते समय भी मुझे आयात त्रुटि मिलती है। –

4

इस तरह का प्रयास करें:

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

तब: द्वारा Publisher.

+3

यह उत्तर स्वीकार्य उत्तर पर कुछ नया प्रदान नहीं करता है, यह भी तीन साल से अधिक पुराना प्रश्न है। – meskobalazs

2

Publisher() के किसी भी घटना की जगह मैं एक उदाहरण कोड है कि wx.lib.pubsub इस्तेमाल किया से अध्ययन करने के लिए और इस समस्या के पार भी आया उपयोग कर रहा था ।

इस मुद्दे बस, मैं सिर्फ लाइन बदल ठीक करने के लिए:

from wx.lib.pubsub import Publisher as pub 

करने के लिए:

from wx.lib.pubsub import pub 

स्वीकार किए जाते हैं जवाब लिंक है कि अभी भी यह सही है, लेकिन सादगी के लिए, मैंने कर गया है इस समाधान को जोड़ा क्योंकि स्वीकृत समाधान थोड़ा उलझन में था।

+0

पुराना प्रोग्राम जल्दी से चलने का यह सबसे छोटा तरीका था! –

संबंधित मुद्दे