2011-10-09 14 views
7

मैं एक पायथन प्रोग्रामर हूं और मैं अपने सॉफ़्टवेयर को अपने सॉफ़्टवेयर को वितरित करने के लिए निष्पादन योग्य बाइनरी बनाने की कोशिश कर रहा हूं, भले ही यह पूरी तरह से निष्पादन योग्य न हो, मैं अपने सॉफ़्टवेयर को वितरित करने में सक्षम होना चाहता हूं जिस तरह से यह अंतिम उपयोगकर्ता के लिए सुविधाजनक है।पायथन - निष्पादन योग्य बनाने में समस्या

मैंने पहले से ही PyInstaller के साथ-साथ Py2Exe को आजमाया है और मुझे एक विशेष सॉफ़्टवेयर के साथ एक ही समस्या का सामना करना पड़ रहा है।

मैंने अपने कार्यक्रम के लिए स्प्लिंटर मॉड्यूल का उपयोग किया (जो निश्चित रूप से सेलेनियम जैसे अन्य ढांचे के साथ बातचीत करने के लिए एक नया उच्च स्तरीय ढांचा है) और हर बार जब मैं इसे संकलित करने का प्रयास करता हूं तो ऐसा लगता है कि "webdriver.xpi" जिसे हमेशा अंतिम पैकेज से बाहर रखा जाता है और इसलिए जब प्रोग्राम वेब-ड्राइवर को निष्पादित करने का प्रयास करता है तो यह आईओ त्रुटि से विफल रहता है कि फ़ाइल "webdriver.xpi" नहीं मिली .... लेकिन इसके अलावा जीयूआई और सब कुछ ठीक से काम करता है।

तो क्या इसे मैन्युअल रूप से शामिल करने का कोई तरीका है? मैंने विशिष्ट फ़ोल्डर @ library.zip फ़ाइल पर ब्राउज़ करके इसे मैन्युअल रूप से शामिल करने का प्रयास किया लेकिन यह काम नहीं किया।

मैं इस मामले में वास्तव में विशेषज्ञ नहीं हूं और मैं सबकुछ बनाने के लिए GUI2Exe पर भरोसा करता हूं ... और यदि इसे ठीक करने के तरीके पर मैं वास्तव में कुछ सलाह की सराहना करता हूं।

धन्यवाद।

+0

आप setup.py स्क्रिप्ट आप दिखा सकते हैं py2exe के लिए प्रयोग किया जाता है? – chown

+0

क्या आप इसे चलाने से पहले एप्लिकेशन निर्देशिका में फ़ाइल नहीं जोड़ सकते हैं? – Fenikso

उत्तर

1

आपको अपने वितरण में किसी भी संसाधन फ़ाइलों को शामिल करने के लिए अपने setup.py में एक निर्देश की आवश्यकता है। ऐसा करने के कुछ तरीके हैं (distutils, setuptools, वितरित करें - जो आप अपना वितरण बनाने के लिए उपयोग कर रहे हैं उसके आधार पर), लेकिन py2exe विकी में example है।

यदि आप उन्हें अपने exe के समान निर्देशिका में स्थापित कर रहे हैं तो आपको अपने संसाधनों को खोजने के लिए this py2exe tip का उपयोग करने की आवश्यकता हो सकती है।

अपने वितरण में संसाधन फ़ाइलों सहित कुछ अतिरिक्त जानकारी के लिए this answer देखें।

10

मैं इस दिन था और एक कामकाज पाया, यह चुस्त है लेकिन यह काम करता है। त्रुटि संदेश में मैं प्राप्त कर रहा था मैंने देखा कि लाइब्रेरी में एक जगह थी। ज़िप। मैं इसे py2exe या सेलेनियम के स्रोत कोड में नहीं ढूंढ सका। मैंने भी पुस्तकालय ज़िप में xpi फ़ाइल डालने का प्रयास किया था और यह काम नहीं किया था। समाधान नहीं है:

  1. अपने सेटअप फ़ाइल में इन विकल्पों का उपयोग:

    setup(
        console=['yourFile.py'], 
        options={ 
          "py2exe":{ 
            "skip_archive": True, 
            "unbuffered": True, 
            "optimize": 2 
          } 
        } 
    ) 
    
  2. भागो py2exe जिले निर्देशिका

में XPI फ़ाइल को स्थापित

  • कॉपी यही कारण है कि यह करना चाहिए

  • +1

    मैं एकknatn से सहमत हूं, मुझे इस समस्या का समाधान बहुत समय पहले मिला है लेकिन पूरी तरह से भूल गया कि मैंने यहां प्रश्न पोस्ट किया है। मुख्य समाधान यह है कि आप GUI2Exe जैसे गुई बिल्डर के साथ भी करते हैं, बस सुनिश्चित करें कि अंतिम पैकेज ज़िप या कुछ भी नहीं है और सबकुछ उस फ़ोल्डर में अनपॅक किया गया है जिसमें आप मैन्युअल रूप से .xpi फ़ाइल जोड़ सकते हैं और इसे काम कर सकते हैं। बाद में मैंने एनएसआईएस जैसे कुछ को तीसरे पक्ष को वितरित करने के लिए लाइसेंस समझौतों, प्रमुख फाइलों आदि के साथ एक शांत स्थापना विज़ार्ड में पैकेज करने के लिए उपयोग किया। मुझे कहना होगा कि मैंने पाइथन को काम करने की कोशिश कर, चारों ओर गड़बड़ करने से बहुत कुछ सीखा है :) –

    +0

    धन्यवाद, वोट के बारे में कैसे ;-) – aknatn

    +0

    लॉल मैंने कोशिश की ... यह कहते हैं कि वोट अप को 15 प्रतिष्ठा xD –

    0

    मुझे पता है कि यह पुराना है, लेकिन मैं यह सुझाव देने से बचने के लिए एक अद्यतन उत्तर देना चाहता हूं कि प्रोग्रामर मैन्युअल रूप से कुछ करते हैं।

    डेटा फ़ाइलों की सूची को टुपल्स के रूप में निर्दिष्ट करने के लिए py2exe विकल्प है।(pathtocopyto, [list of files and where to get them])

    उदाहरण:

    from disutils.core import setup 
    import py2exe 
    
    wd_base = 'C:\\Python27\\Lib\\site-packages\\selenium\\webdriver' 
    RequiredDataFailes = [ 
        ('selenium/webdriver/firefox', ['%s\\firefox\\webdriver.xpi'%(wd_base), '%s\\firefox\\webdriver_prefs.json'%(wd_base)]) 
    ] 
    
    setup(
        console=['MyScript.py'], 
        data_files=RequiredDataFiles, 
        options={ 
         **mypy2exeopts 
        } 
    ) 
    

    केवल नकारात्मक पक्ष यह है मैं इस समय के बारे में पता कर रहा हूँ कि आप अभी भी skip_archive = True की जरूरत है। Library.zip में डेटा फ़ाइलों को प्राप्त करने के लिए कामकाज हैं, लेकिन मुझे वेबड्राइवर की जानकारी के साथ बहुत भाग्य नहीं मिला है।

    1

    यहाँ अपने प्रश्न का एक समाधान है: मैं एक कोड थोड़ा संशोधित किया है और के बाद से मैं एक ही समस्या थी और मैं इसे हल यह काम होना चाहिए:

    from distutils.core import setup 
    import py2exe 
    
    wd_base = 'C:\\Python27\\Lib\site-packages\\selenium-2.44.0-py2.7.egg \\selenium\\webdriver' 
    RequiredDataFailes = [ 
    ('selenium/webdriver/firefox', ['%s\\firefox\\webdriver.xpi'%(wd_base), '%s\\firefox\\webdriver_prefs.json'%(wd_base)]) 
    ] 
    
    setup(
    windows=[{"script":"gui_final.py"}],options={"py2exe":{"skip_archive": True,"includes":["sip"]}}, 
    data_files=RequiredDataFailes, 
    
    ) 
    
    +0

    जब मैंने आपकी स्क्रिप्ट की कोशिश की तो यह सिप के बारे में एक त्रुटि बताता है। परिभाषित या अज्ञात नहीं है –

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