2011-01-07 11 views
16

मैं एक निजी, स्वयं निहित पायथन वातावरण बनाना चाहता हूं जो सिस्टम लाइब्रेरी (जिस तरह से वर्चुअलएन्व करता है) से लिंक नहीं करता है और इसमें पाइथन पैकेज के लिए मानक सी/सी ++ पुस्तकालयों के अपने संस्करण भी शामिल हैं जो इनके लिए केवल रैपर हैं पुस्तकालय (उदाहरण के लिए पीआईएल और libjpeg)।एक निजी, स्वयं निहित पायथन पर्यावरण बनाने का सबसे अच्छा तरीका क्या है?

मैंने वाणिज्यिक ऐप्स देखे हैं जो निर्देशिका में एक संपूर्ण रनटाइम वितरित करते हैं, इसलिए मुझे पता है कि यह किया जा सकता है।

सवाल यह है कि, क्या ऐसा कोई उपकरण है जो इसे करना आसान बनाता है? Virtualenv लगभग मुझे वहाँ मिलता है, esp। --no-site-packages और --relocatable झंडे के साथ, लेकिन यह मानक "सी" पुस्तकालयों के लिए समस्या का समाधान नहीं करता है। मैं एक पीआईएल बनाने में सक्षम होना चाहता हूं, उदाहरण के लिए, libbpeg के bundled निजी संस्करण का उपयोग करता है और libpng

कोई सुझाव?

+1

इस अपने उपयोग के लिए है या आप वितरण के लिए पैकेज करना चाहते हैं? यह थोड़ा अस्पष्ट है। –

+0

अपने स्वयं के इस्तेमाल के लिए। आदर्श रूप में, मुझे एक "पोर्टेबल पर्यावरण" चाहिए, मैं मशीन से उसी मूल वास्तुकला की मशीन पर जा सकता हूं और –

उत्तर

1

cx_Freeze या py2exe आज़माएं। उन्हें पाइथन ऐप्स को पुनर्वितरण करने के लिए पैकेज करने के लिए उपयोग किया जाता है, और इसमें सभी संकुल/पुस्तकालय शामिल हैं जो यह निर्भर करता है।

+0

मैं एक पोर्टेबल विकास वातावरण रखने के लिए और अधिक देख रहा था, जिसे मैं इस्तेमाल की जाने वाली प्रत्येक मशीन पर स्थापित कर सकता था, न कि वितरण के लिए जमे हुए सिस्टम। लेकिन शायद इन पैकेजिंग कार्यक्रमों का उपयोग एक देव पर्यावरण को स्थिर करने के लिए भी किया जा सकता है .... –

+1

मैं देखता हूं। उस स्थिति में, आप बस स्रोत वितरण बनाने के लिए setuptools का उपयोग करने का प्रयास कर सकते हैं, install_requires परिभाषित किए गए हैं, इसलिए आपको पीपीआई से आवश्यक सभी निर्भरताओं को प्राप्त किया जाएगा। इसके बाद, किसी अन्य मशीन पर एक विकास वातावरण बनाना बस उस मशीन में स्रोतों को डाउनलोड करना और सेटअप स्क्रिप्ट चला रहा है। – maranas

1

मैंने सफलतापूर्वक py2exe का उपयोग किया है। cx_Freeze भी है।

अधिक सुझावों के लिए यहाँ यह भी देखें:

इस बयान के बारे में:

कि प्रणाली पुस्तकालयों के लिए वापस नहीं जुड़ता है

आप निश्चित रूप से नहीं कर सकते हैं पूरी तरह से खत्म करें कि इसे कुछ सिस्टम पुस्तकालयों की आवश्यकता है। यदि आप एक विंडोज़ एप्लीकेशन चाहते हैं तो इसे उदाहरण के लिए विंडोज एपीआई का उपयोग करना होगा। मुझे लगता है कि आप विंडोज़ की पूरी प्रतिलिपि को अपने एप्लिकेशन के साथ बंडल नहीं करना चाहते हैं, अगर उनके पास विंडोज़ स्थापित नहीं है ....

+1

दाएं। चीजें जो आम तौर पर ओएस के साथ शामिल होती हैं। लेकिन एक विशेष पैकेज द्वारा उपयोग की जाने वाली विशेष पुस्तकालय –

5

ऐसा लगता है कि आपका वास्तव में क्या है जो एक विशेष रूप से बंडल करने का तरीका है एक वितरण पैकेज में पायथन स्थापना और लिपि। आप निम्न कार्य कर सकते हैं:,

  • डाउनलोड संकलन और एक परियोजना निर्देशिका (। यानी अजगर-toolchain)
  • में अजगर स्थापित एक उपसर्ग स्क्रिप्ट (toolchain) बनाएं कि एक रिश्तेदार पथ का समय लगेगा और PATH, PYTHONPATH, LD_LIBRARY_PATH गतिशील रूप से अद्यतन करें।
 
#!/bin/sh 

# If your clever you can determine install directory dynamically 
prefix='install directory' 
toolchain=$prefix/python-toolchain 
export PATH=$toolchain/bin:$prefix/app/bin:$PATH 
export LD_LIBRARY_PATH=$toolchain/lib:$LD_LIBRARY_PATH 
export PYTHONPATH=$prefix/app/lib:$PYTHONPATH 
exec $* 
  • अपने अनुप्रयोग लिपि में जादू कुकी तो इस तरह दिख सकता:
 
#!.../install directory/toolchain python 

print "Hello World!" 
  • अब आप इस तरह एक निर्देशिका वितरित करने के लिए सक्षम होना चाहिए:
    • package/
      • python-toolchain/
      • app/
संबंधित मुद्दे