2012-01-19 5 views
5

मान लीजिए कि मेरे पास एक बाइनरी स्ट्रिंग है जिसमें पाइथन अंडे होता है, सभी ज़िप्प हो जाते हैं। डिस्क पर इसे लिखने के बिना स्मृति से अंडे निष्पादित करने और "आयात" करने का कोई तरीका है?स्मृति से पाइथन अंडे आयात करने का कोई तरीका है, लेकिन डिस्क नहीं?

+0

[पाइथन, मॉड्यूल के रूप में पायथन कोड की आयात स्ट्रिंग] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3614537/python-import-string-of-python-code- के रूप में मॉड्यूल) –

उत्तर

1

कुछ समय पहले मैं pypiserver पर एक नज़र था और तुम क्या जरूरत के लिए कुछ इसी तरह हो सकता है: http://pypi.python.org/pypi/pypiserver/0.5.0

स्टैंडअलोन संस्करण https://raw.github.com/schmir/pypiserver/standalone/pypi-server-standalone.py

करता है एक DictImporter और zlib पुस्तकालय के साथ कुछ दिलचस्प जादू, हो सकता है कि आप कुछ ऐसा ही कर सकें ..

-1

मैं पाइथन अंडे से परिचित नहीं हूं, लेकिन StringIO ऑब्जेक्ट का उपयोग करने का प्रयास करें। चूंकि पाइथन duck typing का उपयोग करता है, इसलिए आप इसे फ़ाइल की तरह ही इलाज कर सकते हैं यदि आप उस पर कोई फ़ाइल विशिष्ट विधियां नहीं कॉल करते हैं। http://docs.python.org/library/imp.html

आप बाइट-संकलित मॉड्यूल या गतिशील रूप से गठन मॉड्यूल के साथ कुछ भाग्य हो सकता है:

1

imp मॉड्यूल पर एक नजर डालें।

इसके अलावा यह नुस्खा शायद मदद कर सकते हैं (जैसा है नहीं, मुझे लगता है):

http://code.activestate.com/recipes/82234-importing-a-dynamically-generated-module/

उल्लेख किया है उत्तरार्द्ध के लिए एक टिप्पणी में, केवल एक मॉड्यूल के साथ काम करता है।

सवाल समान है एक से पूछा करने के लिए कुछ समय पहले: Python, import string of Python code as module

2

अंडे बस एक और नाम तो वे zipimport.zipimporter का उपयोग कर आयात किए जाते हैं जो (दुर्भाग्य से) एक मॉड्यूल सी

में लिखा

मैं है के तहत फ़ाइलें ज़िप कर रहे हैं अपने विकल्पों को लगता है कि कर रहे हैं:

  1. एक file वस्तु के बजाय एक फ़ाइल नाम की तरह स्वीकार करने के लिए एक संशोधित zipimporter पुनर्लेखन
  2. अजगर में
  3. फिर से लागू zipimporter और फिर एक file की तरह वस्तु
  4. स्वीकार करने के लिए या डिस्क के लिए एक अस्थायी फ़ाइल में लिखने, आयात कि और फिर फ़ाइल को नष्ट संशोधित करते हैं।

इनमें से आखिरी संभवतः सबसे आसान है।

+0

लिखना डेस्क दुर्भाग्य से, एक विकल्प नहीं है। मुझे लगता है कि इसे पुन: कार्यान्वित करना एक विकल्प हो सकता है। –

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

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