2012-12-26 9 views
7

मैं एक पाइथन ऐप विकसित करने के लिए फ्लास्क का उपयोग कर रहा हूं। फिलहाल, मैं चाहता हूं कि यह ऐप स्थानीय रूप से चलाया जाए। यह पाइथन के माध्यम से स्थानीय रूप से ठीक चलता है, लेकिन जब मैं विंडोज़ के लिए एक्सई में बदलने के लिए cx_freeze का उपयोग करता हूं, तो अब मैं Flask.render_template() विधि का उपयोग नहीं कर सकता। जिस क्षण मैं render_template निष्पादित करने का प्रयास करता हूं, मुझे http 500 त्रुटि मिलती है, ठीक उसी तरह जैसे HTML टेम्पलेट जिसे मैं प्रस्तुत करने का प्रयास कर रहा हूं वह मौजूद नहीं है।फ्लास्क ऐप पर cx_freeze का उपयोग कर

मुख्य पायथन फ़ाइल को index.py कहा जाता है। पहले मैंने दौड़ने की कोशिश की: cxfreeze index.py। इसमें cxfreeze "dist" निर्देशिका में फ्लास्क प्रोजेक्ट से "टेम्पलेट्स" निर्देशिका शामिल नहीं थी। तो फिर मैंने इस setup.py स्क्रिप्ट का उपयोग करने और python setup.py build चलाने का प्रयास किया। इसमें अब टेम्पलेट फ़ोल्डर और index.html टेम्पलेट शामिल है, लेकिन जब भी यह टेम्पलेट प्रस्तुत करने का प्रयास करता है तब भी मुझे http: 500 त्रुटि मिलती है। अगर मैं कंसोल में तो index.py चलाने

@app.route('/index', methods=['GET']) 
def index(): 
    print "rendering index" 
    return render_template("index.html") 

मैं:

from cx_Freeze import setup,Executable 

includefiles = [ 'templates\index.html'] 
includes = [] 
excludes = ['Tkinter'] 

setup(
name = 'index', 
version = '0.1', 
description = 'membership app', 
author = 'Me', 
author_email = '[email protected]', 
options = {'build_exe': {'excludes':excludes,'include_files':includefiles}}, 
executables = [Executable('index.py')] 
) 

यहाँ स्क्रिप्ट से एक उदाहरण विधि है

* Running on http://0.0.0.0:5000/ 
rendering index 
127.0.0.1 - - [26/Dec/2012 15:26:41] "GET/HTTP/1.1" 200 - 
127.0.0.1 - - [26/Dec/2012 15:26:42] "GET /favicon.ico HTTP/1.1" 404 - 

और पेज को अपने ब्राउज़र में सही ढंग से प्रदर्शित किया जाता है , लेकिन अगर मैं index.exe चलाता हूं, तो मुझे

* Running on http://0.0.0.0:5000/ 
rendering index 
127.0.0.1 - - [26/Dec/2012 15:30:57] "GET/HTTP/1.1" 500 - 
127.0.0.1 - - [26/Dec/2012 15:30:57] "GET /favicon.ico HTTP/1.1" 404 - 

और

Internal Server Error 

The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. 
अपने ब्राउज़र में

यदि मैं कच्चे HTML को वापस करता हूं, उदा।

@app.route('/index', methods=['GET']) 
def index(): 
    print "rendering index" 
    return "This works" 

तो यह ठीक काम करता है। इसलिए फ्लास्क के टेम्पलेट्स का उपयोग करना बंद करना और मुख्य पीटीथन फ़ाइल में सभी एचटीएमएल तर्क को हार्डकोड करना संभव है। हालांकि यह बहुत गन्दा हो जाता है, इसलिए यदि संभव हो तो मैं इससे बचना चाहूंगा।

मैं अजगर 2.7 32-बिट का उपयोग कर रहा हूँ, अजगर 2.7 32-बिट, और बोतल 0.9

किसी भी मदद और विचारों के लिए धन्यवाद के लिए Cx_freeze!

उत्तर

15

फ्लास्क और जिंगा मॉड्यूल के माध्यम से कई झूठे निशानों के बाद, मुझे अंततः समस्या मिली।

सीएक्सफ़्रीज़ यह नहीं पहचानता कि jinja2.ext एक निर्भरता है, और इसमें शामिल नहीं था।

मैंने इसे Python फ़ाइलों में से एक में import jinja2.ext सहित इसे ठीक किया।

सीएक्सफ़्रीज़ ने लाइब्रेरी.ज़िप \ jinja में ext.pyc जोड़ा। (स्वयं के बाद निर्माण भी काम करता है में यह कॉपी करना)

शायद ज़रुरत पड़े किसी और को पर्याप्त पागल बोतल का उपयोग स्थानीय स्तर पर चलाने क्षुधा :)

विकसित करने के लिए प्रयास करने के लिए है
संबंधित मुद्दे