2012-08-25 13 views
12

मैं प्रोग्रामिंग के लिए नया हूं, और फ्लास्क ट्यूटोरियल के माध्यम से काम करने की कोशिश की। http://flask.pocoo.org/docs/tutorial/फ्लास्कर ट्यूटोरियल; flaskr आयात नहीं कर सकता (डेटाबेस प्रारंभ करें)

मैं इस हिस्से पर अटक कर रहा हूँ (GitHub पर रीडमी से) जब अनुप्रयोग चलाने के लिए कोशिश कर रहा है: https://github.com/mitsuhiko/flask/tree/master/examples/flaskr/

आग ऊपर एक अजगर खोल और इस चलाएँ:

from flaskr import init_db; init_db() 

मैं जब मैं पाइथन खोल में कमांड चलाने की कोशिश करता हूं तो यह त्रुटि प्राप्त करें:

Import error: No module named flaskr 

और मुझे यह त्रुटि तब मिलती है जब मैं स्थानीय रूप से ऐप चलाने की कोशिश करें:

sqlite3.OperationalError 
OperationalError: unable to open database file 

मैं अब कई घंटों के लिए समाधान ढूंढ रहा हूं, लेकिन इसका कोई फायदा नहीं हुआ। मैं क्या देख सकता हूं पर कोई विचार? धन्यवाद।

उत्तर

5

सबसे आसान तरीका है पूरा करने के लिए आपको क्या चाहिए के रूप में आप flaskr है एक ही फ़ोल्डर में अजगर खोल ऊपर सक्रिय किया जाता है:

# I'm assuming that python is available on the command line 
$ cd path/to/flaskr 
$ python 

# Python then runs and you can import flaskr 
>>> from flaskr import init_db; init_db() 
>>> exit() 

चाल है कि जब आप अजगर चलाने यह केवल एक निश्चित संख्या में दिखता है अजगर दुभाषिया से

>>> from sys import path 
>>> for fp in path: 
...  print fp 

: - modules and packages के लिए स्थानों में से आप देख सकते हैं जो स्थानों चलाकर। यदि फ्लास्कर का पथ उस सूची में नहीं है तो फ्लास्क आयात नहीं किया जा सकता है। डिफ़ॉल्ट रूप से पाइथन उस निर्देशिका को जोड़ता है जो इसे अपने खोज पथ में शुरू किया जाता है (यही कारण है कि हम निर्देशिका में पाइथन शुरू करते हैं जिसमें फ्लास्कर होता है।)

एक बार जब आप init_db चलाते हैं तो आप एप्लिकेशन को चलाने और काम करने में सक्षम होना चाहिए ।

+0

वाह, त्वरित बदलाव के लिए धन्यवाद! यह एक बहुत उपयोगी स्पष्टीकरण था, और मैं ऐप को चलाने और चलाने में सक्षम था। एक बार फिर धन्यवाद। –

+0

@ जैमीबी - खुशी है कि मैं मदद कर सकता हूं! ट्यूटोरियल का आनंद लें। –

+0

जब मैं पाइथन दुभाषिया के माध्यम से आयात करता हूं तो मुझे 'रनटाइम त्रुटि: एप्लिकेशन संदर्भ के बाहर काम करना' मिलता है। – caspii

2

ने इस पाता है किसी और के लिए, अपने flaksr एप्लिकेशन के अंत में मुख्य निष्पादनकर्ता को init_db() जोड़ने इस प्रकार है:

if __name__ == '__main__': 
    init_db() 
    app.run() 

कि SQLite त्रुटि को सुलझाने और आप init_db() मैन्युअल रूप से चलाने के लिए होने से बंद कर देना चाहिए।

0

शॉन वीरा का जवाब बहुत अच्छा था, हालांकि मैं यह जोड़ना चाहता हूं कि मुझे एक ही समस्या का सामना करना पड़ रहा था और समाधान में जोड़ना चाहता था। एक ही फ्लास्कर फ़ोल्डर से पाइथन चलाना मेरे लिए पर्याप्त नहीं था। यह भी चलाकर $ अजगर को चलाने से पहले बोतल को सक्रिय करने के जरूरी हो गया था आदेश, इसलिए की तरह "venv/bin/सक्रिय करें।":

$ cd path/to/flaskr 
#active 
$ . venv/bin/activate 
(venv)$ python 

# Python then runs and you can import flaskr 
>>> from flaskr import init_db; 
>>> init_db() 
>>> exit() 
$ 

आशा की जानकारी के अतिरिक्त बिट में मदद करता है!

4

यदि आप फ्लास्क < 0.11 का संस्करण उपयोग कर रहे हैं, तो flask कमांड उपलब्ध नहीं है। उस मामले में flask-cli पैकेज स्थापित करें।

pip install flask-cli 
24

बात यह है कि यह मेरे लिए तय

export FLASK_APP=flaskr 

बदल रहा था

export FLASK_APP=flaskr.py 

से here

2

लिया करने के लिए जब हम कहते हैं:

export FLASK_APP=flaskr 

किसी भी माध्यम से पाइथन समझता है कि पैकेज "flaskr.py" मौजूद है।

समस्या को हल करने का एक तरीका सही पथ चुन रहा है जहां "flaskr.py" रहता है। उदाहरण के लिए, जहां फ़ाइल मौजूद है के लिए अपने वर्तमान कार्यशील निर्देशिका को बदलने और:

export PYTHONPATH=`pwd` 

तो फिर तुम "कुप्पी रन" निष्पादित कर सकते हैं कहीं भी आप चाहते हैं।

पीएस: फ्लास्क ट्यूटोरियल टूटा हुआ लगता है। :)

0
$set FLASK_APP=flaskr 
$python -m flask initdb 
$python -m flask run 
संबंधित मुद्दे