Flask ImportError: ไม่มีโมดูลชื่อกระติกน้ำ


111

ฉันกำลังติดตามบทช่วยสอนเรื่อง Flask ที่นี่:

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

ฉันไปถึงจุดที่ฉันลอง. /run.py และฉันได้รับ:

Traceback (most recent call last):
  File "./run.py", line 3, in <module>
    from app import app
  File "/Users/benjaminclayman/Desktop/microblog/app/__init__.py", line 1, in <module>
    from flask import Flask
ImportError: No module named flask

ลักษณะนี้คล้ายกับ:

ImportError: ไม่มีโมดูลที่ชื่อกระติกน้ำ

แต่วิธีแก้ปัญหาไม่เป็นประโยชน์ สำหรับการอ้างอิงผมทำมีโฟลเดอร์ชื่อขวดซึ่งผู้ใช้รายหนึ่งกล่าวถึงอาจทำให้เกิดปัญหา


1
@MalikBrahimi เมื่อฉันเรียกใช้ Python จากนั้นนำเข้ากระติกน้ำและตรวจสอบว่าฉันได้ติดตั้งเวอร์ชันใดไว้มันจะคืนค่า "0.10.1" ดูเหมือนว่าฉันได้ติดตั้งแล้ว ...
bclayman

4
คุณกำลังบอกว่าถ้าคุณรัน python แล้วimport flaskคุณไม่มีข้อผิดพลาดหรือ? เป็นไปได้ไหมที่คุณต้องใช้ python ในคอมพิวเตอร์ของคุณ?
ari

2
คุณสามารถแทรกimport sys; print sys.pathไฟล์นั้น (ก่อนบรรทัดที่เกิดข้อผิดพลาด) และเรียกใช้สิ่งนั้นในพรอมต์แบบโต้ตอบ
ari

1
@ari ฉันพยายามสร้างสภาพแวดล้อมเสมือนจริง แต่อาจทำให้มันยุ่งเหยิงไปบ้าง? และใช่ฉันใช้ Python 3.3 แต่คิดว่าฉันมี 2.7 ลอยอยู่รอบ ๆ
bclayman

8
คุณไม่ได้ใช้เวอร์ชัน 3 คุณกำลังใช้เวอร์ชัน 2 และคุณมี Python เวอร์ชัน 2 สองชุดบน Mac ของคุณโดยที่มาพร้อมกับ OSX และอีกเวอร์ชันที่คุณติดตั้ง สรุปแล้ว - ดูเหมือนว่าคุณมี Python สามเวอร์ชัน Python3, Python2 (ที่คุณติดตั้ง), Python2 (มาพร้อมกับระบบ) ดูเหมือนว่าคุณไม่ได้ใช้สภาพแวดล้อมที่ถูกต้องที่นี่ ที่คุณติดตั้ง Flask ไม่ใช่ค่าเริ่มต้นของระบบและนี่อาจเป็นสาเหตุของอาการปวดหัวของคุณ
Burhan Khalid

คำตอบ:


153

ลองลบ Virtualenv ที่คุณสร้างขึ้น จากนั้นสร้าง Virtualenv ใหม่ด้วย:

virtualenv flask

จากนั้น:

cd flask

ตอนนี้ขอเปิดใช้งาน Virtualenv

source bin/activate

ตอนนี้คุณจะเห็น(flask)ทางด้านซ้ายของบรรทัดคำสั่ง

แก้ไข: ใน windows ไม่มี "source" ที่เป็น linux ให้เรียกใช้ไฟล์ enable.bat แทนที่นี่ฉันทำโดยใช้ Powershell: PS C: \ DEV \ aProject> & .\Flask\Scripts\activate)

มาติดตั้งขวดกันเถอะ:

pip install flask

จากนั้นสร้างไฟล์ชื่อhello.py(หมายเหตุ: ดูUPDATE Flask 1.0.2ด้านล่าง):

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

และเรียกใช้ด้วย:

python hello.py

UPDATE กระติกน้ำ 1.0.2

ด้วยการเปิดตัวขวดรุ่นใหม่คุณไม่จำเป็นต้องเรียกใช้แอปจากสคริปต์ของคุณ hello.pyควรมีลักษณะดังนี้:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

และเรียกใช้ด้วย:

FLASK_APP=hello.py flask run

ตรวจสอบให้แน่ใจว่าอยู่ในโฟลเดอร์ที่hello.pyเมื่อเรียกใช้คำสั่งล่าสุด

ขั้นตอนทั้งหมดก่อนการสร้าง hello.py ใช้สำหรับกรณีนี้เช่นกัน


3
คุณสามารถวางไว้ที่ใดก็ได้ตราบเท่าที่คุณเรียกใช้โดยเปิดใช้งาน Virtualenv
ย้อนกลับ

สวัสดีฉันใหม่มากสำหรับ python ทุกอย่างทำงานได้ดีกับ Virtualenv ในเทอร์มินัล แต่ปัญหาของฉันคือฉันใช้ IDE Atom ... atom สามารถรันโค้ดในสภาพแวดล้อม Virtualenv เดียวกันได้ไหม
boog

59

สำหรับการใช้งาน python 3

pip3 ติดตั้งกระติกน้ำ


4
หลังจากเปลี่ยนเวอร์ชัน python ของฉันจาก 2.7 เป็น 3 มันใช้งานได้!
Ricardo Silva

ใช่มันได้ผล! แทนที่จะทำ pip install flask (สำหรับ python 2) หากคุณใช้ python3 คุณต้องใช้ pip3 ติดตั้ง flask หรือส่วนขยายอื่น ๆ ของ flask หากต้องการเปลี่ยนเวอร์ชัน python คุณสามารถใช้นามแฝง python = "python3"
Kourosh

12

วิธีเดียวที่ฉันสามารถแก้ไขได้คือการเพิ่มผู้ใช้ของฉัน python dir ลงในไฟล์ myapp.wsgi ตัวอย่างเช่น:

sys.path.append('/home/deployer/anaconda3/lib/python3.5/site-packages')

ฉันเดาว่าถ้าคุณติดตั้งแพ็คเกจในสภาพแวดล้อมทั่วโลกคุณน่าจะไม่มีปัญหา แต่ฉันติดตั้งแพ็คเกจ python ในฐานะผู้ใช้แล้ว


หรือทำสิ่งนี้export PYTHONPATH=/root/environments/my_env/lib/python3.6/site-packages/
Carlos Oliveira

7

หลังจากเปิดใช้งานสภาพแวดล้อมเสมือนและติดตั้ง Flask ฉันได้สร้างไฟล์ app.py ฉันเรียกมันดังนี้: python -m flask run. หวังว่านี่จะช่วยได้!


ไม่แน่ใจว่าเหตุใดจึงใช้งานได้อาจเป็นสิ่งที่เกี่ยวข้องกับเส้นทาง มีความเข้าใจในเรื่องนี้หรือไม่?
nscalf

6

ฉันมีปัญหาคล้ายกันกับ flasgger

เหตุผลก็คือฉันมักจะใช้

sudo pip install flask

แต่ด้วยเหตุผลบางอย่างนั่นไม่ใช่หนทางที่จะไปเสมอไป บางครั้งคุณต้องทำเฉยๆ

pip install flask

gotcha อีกอย่างคือบางครั้งคนพิมพ์pip install Flaskด้วยหมวก F

โพสต์ไว้ที่นี่เผื่อมีคนติดขัด แจ้งให้เราทราบหากช่วยได้

ลิงค์ที่มีประโยชน์: อะไรคือความแตกต่างระหว่าง pip install และ sudo pip install?


6

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน

sudo -H pip install flask

หรือสำหรับ pip3 (python3) ให้ใช้:

sudo -H pip3 install flask

Sidenote

หากคุณใช้ Virtualenv เป็นความคิดที่ดีที่ pip freeze >> requirements.txt จะอนุญาตให้แสดงแพ็คเกจที่ติดตั้งไว้ในที่เดียว sudoคำสั่งและ-Hธง สำหรับข้อมูลเพิ่มเติมเกี่ยวsudo's -Hธงดูที่พอล ตอบ หวังว่านี่จะช่วยคุณได้


3

ฉันใช้ python2 แต่ติดตั้งสิ่งนี้: sudo apt-get install libapache2-mod-wsgi-py3

แทนที่จะเป็น: sudo apt-get install libapache2-mod-wsgi

การแก้ไขการติดตั้งช่วยแก้ปัญหาขวดไม่ได้


1
อาเป็นสิ่งที่เรียบง่าย ฉันมี wsgi libapache mod ผิดใน Dockerfile ของฉันหลังจากอัปเกรดเป็น python 3 ... มี +1
Craicerjack

3
  1. แก้ไข /etc/apache2/sites-available/FlaskApp.conf
  2. เพิ่มสองบรรทัดต่อไปนี้ก่อนบรรทัด "WSGIScriptAlias":

WSGIDaemonProcess FlaskApp python-home=/var/www/FlaskApp/FlaskApp/venv/FlaskApp WSGIProcessGroup FlaskApp

  1. รีสตาร์ท Apache:service apache2 restart

ฉันกำลังติดตามบทช่วยสอนเรื่อง Flask ด้วยและฉันก็พบปัญหาเดียวกันฉันพบวิธีนี้เพื่อแก้ไข

http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world


3

ในกรณีของฉันการแก้ปัญหานั้นง่ายเพียงแค่เริ่มต้นสภาพแวดล้อมเสมือนของฉันดังนี้:

$ venv/scripts/activate

ปรากฎว่าฉันยังใหม่กับ Python :)


1

ไปที่ไฟล์ขวดในไมโครบล็อกแล้วเปิดใช้งานสภาพแวดล้อมเสมือนจริงด้วยsource bin/activateจากนั้นไปที่ขวด / pip install flaskถังและติดตั้งกระติกน้ำและส่วนที่เหลือของแพคเกจ คุณจะเห็นขวดที่แสดงอยู่ในไดเรกทอรีถัง ลองเรียกใช้./run.pyอีกครั้งจากไมโครบล็อก (หรือจากทุกที่ที่คุณมีไฟล์)


1

แม้ว่าฉันจะแนะนำคุณ Virtualenv ด้วยเช่นกันสิ่งนี้อาจช่วยแก้ปัญหาของคุณได้

sudo apt install python-flask

หากคุณต้องการปรับใช้ในเซิร์ฟเวอร์โปรดักชั่นให้ดำเนินการต่อด้วยโซลูชันด้านบนอื่นให้ใช้ Virtualenv


1

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉันเมื่อฉันได้รับข้อผิดพลาดที่คล้ายกันใน Windows 1. ติดตั้ง Virtualenv

pip install virtualenve
  1. สร้าง Virtualenv

    ขวด Virtualenv

  2. ไปที่ Scripts และเปิดใช้งาน Virtualenv

    เปิดใช้งาน

  3. ติดตั้ง Flask

    python -m pip ติดตั้งกระติกน้ำ

  4. ตรวจสอบว่ามีการติดตั้งกระติกน้ำหรือไม่

    python -m pip รายการ


1

อีกประการหนึ่ง - หากคุณใช้ python3 ตรวจสอบให้แน่ใจว่าคุณเริ่มต้นเซิร์ฟเวอร์ด้วยpython3 server.pyไม่ใช่python server.py


0

เข้าสู่โหมดโต้ตอบ python ของคุณจากนั้น:

import sys

sys.path

มันจะพิมพ์เส้นทางของคุณ ตรวจสอบว่ามีการติดตั้งขวด wether ใน sys.path

สำหรับ MacOS เส้นทาง python อยู่ภายใต้ /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

แต่ pip จะติดตั้งแพ็คเกจ python ตามค่าเริ่มต้นภายใต้ /Library/Python/2.7/site-packages

นั่นเป็นเหตุผลว่าทำไมจึงใช้ไม่ได้กับ MacOS


0

สคริปต์ขวดเป็นสิ่งที่ดีในการเริ่มต้นเซิร์ฟเวอร์การพัฒนาเฉพาะที่ แต่คุณจะต้องรีสตาร์ทด้วยตนเองหลังจากเปลี่ยนรหัสของคุณทุกครั้ง นั่นไม่ดีมากและ Flask ทำได้ดีกว่า หากคุณเปิดใช้งานการสนับสนุนการดีบักเซิร์ฟเวอร์จะโหลดตัวเองใหม่เมื่อมีการเปลี่ยนแปลงโค้ดและจะให้ตัวดีบักเกอร์ที่เป็นประโยชน์แก่คุณหากมีสิ่งผิดปกติเกิดขึ้น ในการเปิดใช้งานโหมดดีบักคุณสามารถส่งออกตัวแปรสภาพแวดล้อม FLASK_DEBUG ก่อนที่จะรันเซิร์ฟเวอร์: forexample ไฟล์ของคุณคือ hello.py

$ export FLASK_APP=hello.py
$ export FLASK_DEBUG=1
$ flask run

0

ในกรณีของฉันโดยใช้ Docker ไฟล์. env ของฉันไม่ได้ถูกคัดลอกดังนั้นจึงไม่ได้ตั้งค่า env vars ต่อไปนี้:

.env.local: FLASK_APP=src/app.py

ดังนั้นในของDockerfileฉันฉันต้องรวม:

FROM deploy as dev
COPY env ./env

ซึ่งอ้างอิงใน docker-compose.yml

env_file: ./env/.env.local

อีกสิ่งหนึ่งที่ฉันต้องใส่ใจคือตัวแปรเส้นทางเพื่อให้แน่ใจว่ามีการใช้สภาพแวดล้อมของฉัน

ENV PATH $CONDA_DIR/envs/:my_environment_name_from_yml_file:/bin:$CONDA_DIR/bin:$PATH```

0

คำตอบของฉันสำหรับผู้ใช้ที่ใช้โครงการ Visual Studio Flesk Web:

เพียงคลิกขวาที่ "Python Environment" และคลิกเพื่อ "Add Environment"


0

หากคุณใช้ Pycharm นี่คือปัญหาสภาพแวดล้อมเสมือนจริง

ดังนั้นในขณะสร้างโครงการ Python ของคุณคุณจะต้องเลือกตัวเลือก "ล่ามที่มีอยู่" -> คลิก "ตัวแปลระบบ" -> เลือกตัวเลือกที่ถูกต้องเช่น "* \ AppData \ Local \ Programs \ Python \ Python3.6 \ python.exe "

คุณสามารถใช้ 'New Virtual Env' ได้เช่นกัน แต่ฉันเพิ่งให้การแก้ไขด่วนที่ควรใช้กับผู้ใช้ Pycharm


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.