2013-02-11 25 views
9

मैं एक स्टैंडअलोन निष्पादन योग्य py2exe का उपयोग करते हुए एक सरल जीयूआई स्क्रिप्ट अजगर 2.7 और PyQt4 के साथ लिखा परिवर्तित करने पर काम कर रहा हूँ नहीं मिल रहा। मैं "ऐसी कोई फ़ाइल मौजूद नहीं है" त्रुटियां प्राप्त कर रहा हूं, और मैंने कुछ ठीक करने में कामयाब रहा है, हालांकि यह एक जिद्दी प्रतीत होता है। यह msvcp90.dll नहीं ढूंढ सकता है, और distutils को एक छोटे से ट्रेसबैक के साथ एक त्रुटि संदेश देता है और फिर मेरी py2exe स्क्रिप्ट पर वापस आता है, जो बहुत प्रबुद्ध नहीं है। मैं एमएस सी ++ पुनर्वितरण क्रम स्थापित किया है, के रूप मेंpy2exe msvcp90.dll

py2exe fails to generate an executable

में सिफारिश की लेकिन मेरी स्क्रिप्ट अभी भी .dll पता नहीं लगा सकते। नीचे मेरी py2exe स्क्रिप्ट है, मेरी स्क्रिप्ट के नाम के साथ बाहर अवरुद्ध:

from distutils.core import setup 
from py2exe.build_exe import py2exe 
import sys, os, zmq 

sys.argv.append('py2exe') 

os.environ["PATH"] = \ 
os.environ["PATH"] + \ 
os.path.pathsep + os.path.split(zmq.__file__)[0] 

setup(
    options = {'py2exe':{'bundle_files':1,"includes":["zmq.utils", 
      "zmq.utils.jsonapi","zmq.utils.strtypes"]}}, 
    console = [{'script':"#######.py"}], 
    zipfile = None 
) 

मैं पहले से ही zmq के साथ एक समस्या (जो कभी उस बात के लिए, मेरी स्क्रिप्ट, या मेरे जीयूआई द्वारा नहीं किया जाता ठीक करने के बाद, जहाँ तक मुझे पता है)। मैं क्या गलत कर रहा हूं?

+0

मुझे लगता है कि कारण zmq शामिल किया गया है '' '" भी शामिल है "की वजह से है: [" zmq .''' चीजें (और संभवतः '' 'आयात sys, os, zmq''' stanza भी) – dja

उत्तर

9

ठीक है, मैं बनाने के लिए अपनी एप्लिकेशन पाने में कामयाब रहे है, और हालांकि सवाल अब मामूली पुराना है, यह मेरी आशा है कि इस प्रयोग के अंत में किसी को है।

सबसे पहले, py2exe शायद गलत उपकरण है। यह पुराना और AFAICT अनियमित है। इसके बजाय PyInstaller पर विचार करें। PyInstaller का उपयोग करना इसे स्थापित करने के रूप में सरल रूप से सरल है, PyWin32 स्थापित करना, और फिर python %path_to_pyinstaller%/pyinstaller.py --onefile --windowed source.py पर जा रहा है। PyInstaller साइड असेंबली द्वारा साइड की सभी गड़बड़ी से संबंधित है और इसलिए आपको कुछ भी करने के बिना।

संक्षेप में, PyInstaller का उपयोग करें।

हालांकि, अपने सवाल का जवाब देने, यह मेरे लिए काम किया:

  1. सवाल आप जुड़े हैं - विशेष रूप से this answer में सही शुरुआत है। सही DLLs का पता लगाएं और उन्हें सेल्सियस के लिए कॉपी: \ Python27 \ DLLs
  2. अपने मौजूदा setup.py फ़ाइल खाई। यदि आप zmq का उपयोग नहीं कर रहे हैं, तो इसे आयात करने का कोई कारण नहीं है। इसके अलावा, एक खिड़की वाले अनुप्रयोग के लिए आप windows=console= नहीं चाहते हैं। मेरे फ़ाइल (पैकेजिंग show.py के लिए) है:

    #!/usr/bin/python 
    
    from distutils.core import setup 
    import py2exe 
    
    setup(options={'py2exe':{'bundle_files':1}}, 
         windows=['show.py']) 
    

    (यह http://www.blog.pythonlibrary.org/2010/07/31/a-py2exe-tutorial-build-a-binary-series/ बंद pinched है)

+0

आपके समाधान को मेरी स्क्रिप्ट एक exe बनाने के लिए मिला है, लेकिन यह अभी भी काफी काम नहीं कर रहा है। फिर भी, मेरी समस्या हल हो गई है। धन्यवाद। – bythenumbers

+1

बाहर निकलता है कि थॉमस हेलर अभी भी योगदान दे रहा है! Http://sourceforge.net/p/py2exe/svn/737/tree/trunk/py2exe/ChangeLog – Barton

+0

यह सच है कि ['pyinstaller'] (https://github.com/pyinstaller/pyinstaller/commits/develop) [' py2exe'] से अधिक सक्रिय है (http://sourceforge.net/p/py2exe/svn/737/tree/ ट्रंक/py2exe/चैंज)। – Antonio