का उपयोग करने के लिए फ्लास्क प्राप्त करना मुझे मूलभूत "हैलो वर्ल्ड" फ्लास्क ऐप चल रहा है।पाइथन 3 (अपाचे/mod_wsgi)
मैं अपाचे 2.4 का उपयोग कर उबंटू 14.04 पर हूं। मैंने mod_wsgi स्थापित किया है।
मैंने वर्चुअलनव-निर्मित पायथन 2 को फ्लास्क स्थापित करने के लिए ~/web/piFlask/venv/
बनाया है।
हालांकि, मैं अपने फ्लास्कैप को एक पायथन 3.x मॉड्यूल आयात करना चाहता हूं जो मैंने लिखा है।
ऐसा करने के लिए मुझे क्या करने की ज़रूरत है?
मैं एक ~/web/piFlask/venv3/
बनाने और ~/web/piFlask/piFlask.wsgi
को संशोधित करने की कोशिश की:
import os, sys
PROJECT_DIR = '/home/pi/web/piFlask'
activate_this = os.path.join(PROJECT_DIR, 'venv3/bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
sys.path.insert(0, PROJECT_DIR)
from piFlask import app as application
application.debug = True
लेकिन मुझे नहीं लगता कि यह पर्याप्त है। यह .wsgi वास्तव में एक पायथन फ़ाइल है जो mod_wsgi द्वारा निष्पादित की जाएगी, जो मुझे यकीन है कि निष्पादन करने के लिए मुझे Py2.x दुभाषिया का उपयोग करना होगा।
तो अगर मैं सही ढंग से समझ रहा हूं, तो mod_wsgi इस .wsgi को निष्पादित करने के लिए सिस्टम पायथन को सक्रिय करता है, जो बदले में अनुरोध को संसाधित करने के लिए मेरे ~/web/piFlask/venv/
दुभाषिया को आग लग जाएगा।
मुझे लगता है मैं /etc/apache2/mods-available/wsgi.conf
में WSGIPythonPath /home/pi/web/piFlask/venv3/lib/python3.4/site-packages
की स्थापना करके या तो एक प्रणाली python3 या अपने खुद के venv3/... उपयोग करने के लिए mod_wsgi लिए राजी कर सकता है लेकिन मैं कहीं एक निर्देश मिला कह रही है कि आपको Py3 के लिए mod_wsgi संकलित करना है, और नीचे इस समस्या से नीचे जल्दी गिर जाता है।
मैं सिर्फ python3 को लक्षित करने के लिए जा रहा हूँ। ऐसा लगता है कि 'libapache2-mod-wsgi-py3' है - क्या मैं इसके बजाय कर सकता हूं: 1. a2disable mod_wsgi, 2. पाइप का उपयोग कर mod_wsgi अनइंस्टॉल करें, 3. pip3 का उपयोग करके libapache2-mod-wsgi-py3 स्थापित करें? –
हां। जब तक आपके सभी कोड और किसी तीसरे पक्ष के पाइथन मॉड्यूल की आवश्यकता है, तो पाइथन 3 सक्षम है। सब कुछ आपके पायथन 3 वर्चुअल वातावरण में स्थापित करने की आवश्यकता होगी। आप विभिन्न पायथन संस्करणों के लिए वर्चुअल वातावरण से भागों को मिश्रित नहीं कर सकते हैं। –