2012-01-27 7 views
13

py2exe py2exe के लिए महान है, और मैं इसका उपयोग जब भी मैं एक विंडोज सिस्टम पर चलाने के लिए एक अजगर कार्यक्रम पैकेज करना चाहते हैं।क्रॉस-प्लेटफॉर्म विकल्प

मेरे सवाल है, वहाँ एक समान उपकरण है कि मैं विंडोज पर कार्यक्रम पैकेज का उपयोग कर सकते है, लेकिन मैं तो लिनक्स पर चला सकते हैं कि?

+0

आपको लगता है कि सुरक्षित रूप से ग्रहण कर सकते हैं अधिकांश लिनक्स सिस्टम पर पाइथन पहले ही स्थापित है। – ThiefMaster

+2

हां, लेकिन मैं अभी भी लक्षित लिनक्स सिस्टम पर सामान इंस्टॉल किए बिना, किसी भी आयातित मॉड्यूल सहित सभी प्रासंगिक स्रोत फ़ाइलों को आसानी से पैकेज करना चाहता हूं। – xorsyst

उत्तर

1

ठीक है, मैं यह कर दिया है। यह थोड़ा हैकी है, लेकिन यह मेरे उपयोग के मामले के लिए बहुत अच्छी तरह से काम करता है।

इसका आयात यह है कि सभी आयातित मॉड्यूल को ढूंढने के लिए मॉड्यूलफ़िंडर का उपयोग करें, किसी भी सिस्टम को फ़िल्टर करें, उन्हें संकलित करें और उन्हें ज़िप करें।

दुर्भाग्य से इस के लिए मेरे कोड है कि इस सवाल का किसी भी प्रासंगिकता नहीं है अतिरिक्त जटिलताओं से अटे पड़े है, तो मैं एक काम कर कार्यक्रम, बस कुछ स्निपेट पेस्ट नहीं कर सकते हैं:

zipfile = ZipFile(os.path.join(dest_dir, zip_name), 'w', ZIP_DEFLATED) 
sys.path.insert(0, '.') 
finder = ModuleFinder() 
finder.run_script(source_name) 

for name, mod in finder.modules.iteritems(): 
    filename = mod.__file__ 
    if filename is None: 
     continue 
    if "python" in filename.lower(): 
     continue 

    subprocess.call('"%s" -OO -m py_compile "%s"' % (python_exe, filename)) 

    zipfile.write(filename, dest_path) 
6

यहाँ भी PyInstaller लिनक्स, MacOS और Windows का समर्थन करता है - मैं इसे इस्तेमाल किया है (अभी तक) तो मैं नहीं जानता कि आप लिनक्स के लिए खिड़कियों पर सामान पैकेज कर सकते हैं अगर, लेकिन manual से अधिक नज़र में यह संभव हो रहा है ।

संपादित करें: FAQ राज्यों को स्पष्ट रूप से है कि आप लिनक्स से एक खिड़कियों पैकेज और लिनक्स से कोई मैक ओएस पैकेज नहीं बना सकते न - अन्य दो स्रोतों से एक लिनक्स पैकेज बनाने के बारे में कोई बात नहीं है, लेकिन यह नहीं हो सकता है काम।

EDIT2: मैं cx_freeze पाया थोड़ा जो भी एक नज़र लायक हो सकता है googling के बाद।

+0

दिलचस्प विचार, लेकिन मैं या तो काम करने में कामयाब नहीं रहा हूं। सुझावों के लिए धन्यवाद। – xorsyst

5

मैं वास्तव में संदेह आप बिल्कुल ऐसा ही कुछ कर सकते हैं कि।

क्या आप बस अपने आप कॉन्फ़िगर है 3 विंडोज, MacOS के लिए एक और लिनक्स everyhing आप अपने कार्यक्रम चलाने की जरूरत है कि के लिए एक के लिए VMs एक का निर्माण कर सकता है।

फिर प्रत्येक प्लेटफ़ॉर्म के लिए वितरण उत्पन्न करने के लिए py2exe/py2app/pyinstaller के संयोजन का उपयोग करें। आपके पास 3 अलग-अलग पॅककेज होंगे लेकिन उनमें से प्रत्येक को अच्छी तरह से पैक किया जाएगा और क्लाइंट मशीनों पर कुछ और स्थापित करने की आवश्यकता नहीं होगी।

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