2012-12-27 33 views
5

मैं वेबपैप (फ्लास्क आधारित) के लिए एक पायथन पैकेज बनाने की कोशिश कर रहा हूं और मैं किसी ज्ञात निर्देशिका में कुछ फ़ाइलों को स्थापित करना चाहता हूं।स्थैतिक फ़ाइलों के साथ फ्लास्क एप्लिकेशन को सही ढंग से कैसे पैकेज करें

उदाहरण के लिए फ्लास्क एकीकृत सर्वर (पेस्ट-आधारित) चलाते समय वर्तमान पैकेज के अंदर templates और static निर्देशिकाओं को खोजने का प्रयास करता है। लेकिन उत्पादन में मैं उन निर्देशिकाओं को virtualenv/share/package-name/{static,templates} जैसे अधिक विशिष्ट स्थान में स्थापित करना चाहूंगा। अन्यथा वे कहीं lib/python-2.x/... के तहत होंगे जो उचित प्रतीत नहीं होता है।

मैंने पैरामीटर का उपयोग setup.py में फ़ाइलों को स्थापित करने का प्रयास किया, लेकिन यह पूरे पेड़ों (error: can't copy 'xxx': doesn't exist or not a regular file) के लिए उपयोगी प्रतीत नहीं होता है।

इस स्थिति में उचित समाधान क्या है?

+0

इससे मुझे मेरे फ्लास्क ऐप को पैकेजिंग के साथ बहुत मदद मिली: http://flask.pocoo.org/docs/patterns/distribute/#basic-setup-script –

+0

मैंने इसे देखा है। दुर्भाग्य से वे सिर्फ डेटा फ़ाइलों के साथ पैकेज की प्रतिलिपि बनाते हैं। मैं इसे अभी कर रहा हूं, लेकिन मैं वास्तव में रुकना चाहता हूं। मैं वास्तव में अपने वेबसर्वर को '/ home/xxx_webapp/venv/lib/python2.7/साइट-पैकेज/xxx-1.0dev-py2.7.egg/xxx/static /' पर इंगित करना पसंद नहीं करता हूं। मैं '/ home/xxx_webapp/venv/share/xxx/static/' – viraptor

+0

जैसे कुछ का उपयोग करना चाहूंगा, कार्यक्षमता फ्लास्क प्रदान करने के अलावा आप किसी अन्य चीज़ के साथ स्थिर फ़ाइलों की सेवा करने का प्रयास क्यों कर रहे हैं? –

उत्तर

3

आप क्या कर सकते हैं अपने वर्चुअल एनवी और स्थैतिक फ़ाइलों को मूल पैकेज (.deb या .rpm) में पैकेज कर सकते हैं और फिर आप उन्हें कहीं भी कहीं भी रख सकते हैं। मैंने इस here पर एक ब्लॉग पोस्ट लिखा था। यह एक आसान थोड़ा गहरे लाल रंग का रत्न fpm कहा जाता है का उपयोग करता है और यद्यपि मैं अपने अजगर पैकेज से मेरी स्टैटिक फ़ाइलें अलग न तुम इतनी

fpm -s dir -t deb -n food-truck -v 0.1 -d "python,python-dev,postgresql" /home/ubuntu/food_truck-build/=/home/ubuntu/foodtruck.com <path to static files>=<destination of static files> 

आप इस्तेमाल कर सकते हैं जैसे एफ पी एम आदेश के अंत पर एक और रास्ता मानचित्रण जोड़कर करने में सक्षम होगा अन्य कॉन्फ़िगरेशन फ़ाइलों जैसे कि आपकी nginx config आदि को निर्दिष्ट करने के लिए fpm। लेकिन यह आपके ऊपर है, और इसका मतलब हो सकता है कि आपकी तैनाती थोड़ा कम लचीला है।

आशा है कि मदद करता है!

-1

पायथन की पैकेजिंग उपयोगिताओं का उद्देश्य इस के लिए नहीं है। स्थैतिक फ़ाइलों को nginx 'या अपाचे की साइट रूट पर कॉपी करना तैनाती स्क्रिप्ट के लिए एक कार्य होगा, जिसे Fabric का उपयोग करके लिखा जा सकता है।