Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन मॉड्यूल को एक फ़ाइल में कैसे एनकैप्सुलेट करें?

आप आमतौर पर पायथन मॉड्यूल को एक फ़ाइल में एनकैप्सुलेट नहीं कर सकते। ऐसा करने से पायथन द्वारा उपयोग की जाने वाली मॉड्यूल खोज विधि (फ़ाइलें और डायरेक्टरी) नष्ट हो जाएगी। यदि आप किसी मशीन पर मॉड्यूल इंस्टॉल नहीं कर सकते (पर्याप्त अनुमति न होने के कारण), तो आप या तो `virtualenv` का उपयोग कर सकते हैं या मॉड्यूल फ़ाइलों को किसी अन्य डायरेक्टरी में सेव करके निम्नलिखित कोड का उपयोग करके पायथन को दिए गए मॉड्यूल में खोजने की अनुमति दे सकते हैं:

विधि 1: sys.path संशोधित करें


>>> import os, sys
>>> file_path = 'AdditionalModules/'
>>> sys.path.append(os.path.dirname(file_path))
>>> # अब पायथन मॉड्यूल इम्पोर्ट करने के लिए AdditionalModules फ़ोल्डर भी खोजेगा क्योंकि हमने इसे PYTHONPATH पर सेट किया है।

विधि 2: virtualenv का उपयोग (अनुशंसित)

आप एक आइसोलेटेड स्थानीय पायथन वातावरण बनाने के लिए `virtualenv` का उपयोग कर सकते हैं। संबोधित की जा रही मूल समस्या निर्भरता और संस्करणों की है, और अप्रत्यक्ष रूप से अनुमतियों की। कल्पना करें कि आपके पास एक एप्लिकेशन है जिसे `LibFoo` के संस्करण 1 की आवश्यकता है, लेकिन दूसरे एप्लिकेशन को संस्करण 2 की आवश्यकता है। आप दोनों एप्लिकेशन का उपयोग कैसे कर सकते हैं? यदि आप सब कुछ `/usr/lib/python2.7/site-packages` (या आपके प्लेटफॉर्म का मानक स्थान) में इंस्टॉल करते हैं, तो आप अनजाने में एक एप्लिकेशन को अपग्रेड करने की स्थिति में आसानी से पहुंच सकते हैं जिसे अपग्रेड नहीं किया जाना चाहिए। यह हमारे उपयोग के मामले में भी उपयोग किया जा सकता है जहां हम मशीन पर पैकेज इंस्टॉल नहीं कर सकते क्योंकि हमारे पास अनुमतियां नहीं हैं। अधिक जानकारी के लिए वर्चुअल एनवी डॉक्स पढ़ें: https://virtualenv.pypa.io/en/stable/

वास्तविक "सिंगल फ़ाइल" समाधान

1. zipapp (पायथन 3.5+) - मानक लाइब्रेरी


# प्रोजेक्ट संरचना
myapp/
├── main.py
├── module1.py
└── module2.py

# __main__.py बनाएं (एंट्री पॉइंट)
# zipapp बनाएं
python -m zipapp myapp -m "main:main" -o myapp.pyz

# चलाएं
python myapp.pyz

2. PyInstaller - स्टैंडअलोन एक्जीक्यूटेबल


pip install pyinstaller
pyinstaller --onefile main.py
# dist/main बनाता है (स्टैंडअलोन बाइनरी)

3. शिव (Shiv) - पायथन जिपऐप बिल्डर


pip install shiv
shiv -c myapp -o myapp.pyz -r requirements.txt .

4. stickytape - सिंगल-फ़ाइल स्क्रिप्ट


pip install stickytape
stickytape script.py --add-python-path . > standalone_script.py

5. पेक्स (Pex) - पुनरुत्पादन योग्य वातावरण


pip install pex
pex requests flask -o app.pex -e main:main
./app.pex

तुलना

टूलआउटपुटउपयोग मामला
zipapp.pyzसरल, मानक लाइब्रेरी, कोई निर्भरता नहीं
PyInstallerबाइनरीस्टैंडअलोन एक्जीक्यूटेबल, C एक्सटेंशन सपोर्ट
Shiv.pyzनिर्भरता सहित, तेज़ स्टार्टअप
stickytape.pyप्योर पायथन, सिंगल फ़ाइल
Pex.pexपुनरुत्पादन योग्य, बहु-प्लेटफॉर्म

निष्कर्ष

सच्चे "सिंगल फ़ाइल" वितरण के लिए, PyInstaller (बाइनरी) या Shiv/zipapp (पायथन जिपऐप) का उपयोग करें। `virtualenv` विकास/आइसोलेशन के लिए सर्वोत्तम रहता है।

  1. - रिमोट पायथन मॉड्यूल कैसे उपयोग करें?

    पायथन मॉड्यूल को रिमोटली इम्पोर्ट करने के तरीके हैं। हालांकि ऐसा करने की अनुशंसा नहीं की जाती क्योंकि यह आपके ऐप को धीमा कर देगा। आप इसे प्राप्त करने के लिए `knockout` मॉड्यूल का उपयोग कर सकते हैं। knockout इंस्टॉल करें $ pip install knockout रिमोट इम्पोर्ट के लिए knockout उपयोग करें urlimport.r

  1. - साइगविन (Cygwin) में पायथन मॉड्यूल कैसे इंस्टॉल करें?

    साइगविन इंस्टॉल करते समय, सुनिश्चित करें कि आप सूची से `python/python-setuptools` इंस्टॉल करें। यह easy_install पैकेज इंस्टॉल करेगा। एक बार आपके पास `easy_install` हो जाए, तो आप इसका उपयोग `pip` इंस्टॉल करने के लिए कर सकते हैं। निम्न कमांड टाइप करें: $ easy_install-a.b pip आपको `a.b` को अपने पाय

  1. - Python Modules कैसे काम करते हैं?

    Python Modules का Working Python के पास Definitions को एक File में रखने और उन्हें Script या Interpreter के Interactive Instance में उपयोग करने का तरीका है। ऐसी File को Module कहते हैं; एक Module से Definitions को अन्य Modules या Main Module (Variables का Collection जो आपको Top Level पर Execute किए