पायथन अंडे की फाइल कैसे बनाएं


91

मेरे पास पायथन में अंडे की फाइलों के बारे में प्रश्न हैं।

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

उस के अनुसार, ऐसा लगता है कि मुझे एक सेटअप-थ्रू फ़ाइल की आवश्यकता है।

  1. क्या आप मुझे बताएंगे कि मुझे सेटअप-थ्रू फ़ाइल में डालने की क्या आवश्यकता है और इसे कहाँ रहना चाहिए?
  2. मुझे लगता है कि यह setup.py बनाने के लिए पर्याप्त है और फिर अंडे फ़ाइल प्राप्त करने के लिए "setup.py bdist_egg" शुरू करें। क्या आप पुष्टि कर सकते हैं?
  3. क्या केवल .pyc फ़ाइलों को अंडे की फ़ाइल में शामिल करना संभव है?
  4. .Egg फ़ाइल कैसे मैं सिर्फ इस तरह से unpacking बिना इसे से कोड शुरू कर सकते हैं java -jar <jar file>?

अंडे के बजाय मुझे क्या उपयोग करना चाहिए? यहाँ अंडे के बारे में मेरा सवाल है stackoverflow.com/questions/14902732/…
ग्रीन

@YauhenYakimovich: यह लिंक अब एक पार्क किया गया स्पैम डोमेन है। हो सकता है कि लायक संपादन का उपयोग करने के packaging.python.org/en/latest/wheel_egg ?
क्रिस एडम्स

जवाबों:


74

आप गलत डॉक्यूमेंटेशन पढ़ रहे हैं। आप यह चाहते हैं: https://setuptools.readthedocs.io/en/latest/setuptools.html#develop-deploy-the-project-source-in-development-mode

  1. यहाँ पर Python के स्टैण्डर्ड लाइब्रेरी डॉक्यूमेंटेशन में setup.py बनाने के लिए डिस्टुटिल डॉक्यूमेंट में कवर किया गया है । मुख्य अंतर (अजगर अंडे के लिए) आप import setupसे है setuptools, नहीं distutils

  2. हां। यह सही होना चाहिए।

  3. मुझे ऐसा नहीं लगता। pycफ़ाइलें संस्करण और प्लेटफ़ॉर्म पर निर्भर हो सकती हैं। आप अंडे को खोलने में सक्षम हो सकते हैं (वे सिर्फ ज़िप फाइलें होनी चाहिए) और .pyफ़ाइलों को छोड़ने वाली .pycफ़ाइलों को हटा दें , लेकिन यह अनुशंसित नहीं होगा।

  4. मुझे यकीन नहीं है। वह "विकास मोड" हो सकता है। या आप कुछ "py2exe" या "py2app" मोड की तलाश कर रहे हैं?


51
+1: कभी भी .pyc फ़ाइलों को शामिल न करें। वे पूरी तरह से भ्रमित हैं। हमने गलती से विंडोज़ की .pyc फ़ाइलों को एक लिनक्स बॉक्स पर कॉपी कर लिया था और उसमें सबसे अधिक भ्रामक त्रुटि ट्रेसबैक संदेश थे। क्योंकि फ़ाइलनाम जहाँ मूल Windows फ़ाइलनाम हैं। उत्पादन सर्वर पर उन विंडो फ़ाइलनामों को देखकर घबराहट हुई।
S.Lott

बस pyinstaller
Nickpick

30

# 4 के लिए, आपके ऐप के लिए जार फ़ाइल के साथ जावा शुरू करने के लिए निकटतम चीज पायथन 2.6, निष्पादन योग्य ज़िप फ़ाइलों और निर्देशिकाओं में एक नई सुविधा है ।

python myapp.zip

जहाँ myapp.zip एक ज़िप है जिसमें एक __main__.pyफ़ाइल होती है जिसे स्क्रिप्ट फ़ाइल के रूप में निष्पादित किया जाता है। आपकी पैकेज निर्भरताएं भी फ़ाइल में शामिल की जा सकती हैं:

__main__.py
mypackage/__init__.py
mypackage/someliblibfile.py

आप एक अंडे को भी अंजाम दे सकते हैं, लेकिन भस्म उतनी अच्छी नहीं है:

# Bourn Shell and derivatives (Linux/OSX/Unix)
PYTHONPATH=myapp.egg python -m myapp
rem Windows 
set PYTHONPATH=myapp.egg
python -m myapp

यह पायथन पथ पर myapp.egg डालता है और मॉड्यूल को चलाने के लिए -m तर्क का उपयोग करता है। आपका myapp.egg संभवतः कुछ ऐसा दिखेगा:

myapp/__init__.py
myapp/somelibfile.py

और अजगर चला जाएगा __init__.py(आपको __file__=='__main__'कमांड लाइन उपयोग के लिए अपने ऐप में जांचना चाहिए )।

अंडे की फाइलें सिर्फ ज़िप फाइलें होती हैं ताकि आप __main__.pyअपने अंडे को जिप टूल से जोड़ सकें और अजगर 2.6 में इसे निष्पादन योग्य बना सकें और इसे python myapp.eggऊपर के झुकाव के बजाय इसे चलाएं जहां PYTHONPATH पर्यावरण चर सेट किया गया है।

कैसे उन्हें सीधे एक साथ निष्पादन योग्य बनाने के लिए सहित निष्पादन ज़िप फ़ाइलों पर अधिक जानकारी कुटिया पर पाया जा सकता विषय पर माइकल Foord के ब्लॉग पोस्ट


वैकल्पिक रूप से एक आभासी वातावरण का उपयोग कर सकते guide.python-distribute.org/installation.html#upgrading
Yauhen Yakimovich

10

मुझे लगता है कि अब आपको अंडे के बजाय वितरण के लिए अजगर पहियों का उपयोग करना चाहिए ।

पहिए अजगर के वितरण के नए मानक हैं और इनका उद्देश्य अंडे को बदलना है। समर्थन पाइप> 1.4 और सेप्टुपूल> = 0.8 में पेश किया जाता है।


2
आप एक पहिया आयात नहीं कर सकते, जहाँ तक मैं बता सकता हूँ। कभी-कभी मैं अपनी स्क्रिप्ट को अंडे के साथ तैनात करना चाहता हूं ताकि इसे और अधिक पोर्टेबल बनाया जा सके।
गिलेस्पी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.