Flask ImportError: No Module Named Flask

103

Saya mengikuti tutorial Flask di sini:

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

Saya sampai pada titik di mana saya mencoba ./run.py dan saya mendapatkan:

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

Ini terlihat mirip dengan:

ImportError: Tidak ada modul bernama flask

Tetapi solusi mereka tidak membantu. Untuk referensi, saya tidak memiliki folder bernama labu yang satu pengguna disebutkan dapat menyebabkan masalah.

bclayman.dll
sumber
1
@ MalikBrahimi Ketika saya menjalankan Python dan kemudian mengimpor flask dan memeriksa versi apa yang telah saya instal, ia mengembalikan "0.10.1". Jadi sepertinya saya sudah menginstalnya ...
bclayman
4
Anda mengatakan jika Anda menjalankan python dan kemudian apakah import flaskAnda tidak memiliki kesalahan? Apakah mungkin Anda memiliki versi python di komputer Anda?
ari
2
Dapatkah Anda memasukkan import sys; print sys.pathfile tersebut (sebelum baris tempat kesalahan terjadi) dan juga menjalankannya di prompt interaktif?
ari
1
@ari Saya mencoba melakukan hal lingkungan virtual tetapi mungkin telah mengacaukannya entah bagaimana? dan ya, saya menggunakan Python 3.3 tetapi saya pikir saya memiliki 2,7 mengambang
bclayman
8
Anda tidak menggunakan versi 3, Anda menggunakan versi 2, dan Anda memiliki dua salinan Python versi 2 di mac Anda, satu yang disertakan dengan OSX, dan yang lainnya telah Anda instal. Jadi, secara keseluruhan - sepertinya Anda memiliki tiga versi Python; Python3, Python2 (Anda menginstal), Python2 (disertakan dengan sistem). Sepertinya Anda tidak menggunakan lingkungan yang benar di sini; dimana Anda menginstal Flask bukanlah sistem default, dan ini mungkin penyebab sakit kepala Anda.
Burhan Khalid

Jawaban:

148

Coba hapus virtualenv yang Anda buat. Kemudian buat virtualenv baru dengan:

virtualenv flask

Kemudian:

cd flask

Sekarang mari aktifkan virtualenv:

source bin/activate

Sekarang Anda akan melihat (flask)di sebelah kiri baris perintah.

Mari instal flask:

pip install flask

Kemudian buat file bernama hello.py(CATATAN: lihat di UPDATE Flask 1.0.2bawah):

from flask import Flask
app = Flask(__name__)

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

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

dan jalankan dengan:

python hello.py

UPDATE Flask 1.0.2

Dengan rilis flask baru, tidak perlu menjalankan aplikasi dari skrip Anda. hello.pyakan terlihat seperti ini sekarang:

from flask import Flask
app = Flask(__name__)

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

dan jalankan dengan:

FLASK_APP=hello.py flask run

Pastikan berada di dalam folder tempat Anda hello.pymenjalankan perintah terbaru.

Semua langkah sebelum pembuatan hello.py juga berlaku untuk kasus ini

Rollback
sumber
3
Anda dapat menempatkannya di mana saja selama Anda menjalankannya dengan virtualenv diaktifkan.
Rollback
Hai, saya sangat baru mengenal python. Semuanya bekerja dengan baik dengan virtualenv di terminal. Tapi, masalah saya adalah saya menggunakan IDE Atom ... dapatkah atom menjalankan kode di lingkungan virtualenv yang sama?
boog
55

Untuk penggunaan python 3

pip3 pasang labu

Khalid Bin Huda
sumber
4
Setelah mengubah versi python saya dari 2.7 menjadi 3, itu berhasil!
Ricardo Silva
Ya, ini berhasil! Alih-alih melakukan pip install flask (untuk python 2), jika Anda menggunakan python3, Anda perlu menggunakan pip3 install flask atau ekstensi flask lainnya. Untuk mengubah versi python Anda, Anda dapat menggunakan alias python = "python3".
Kourosh
12

Satu-satunya cara yang bisa saya selesaikan adalah dengan menambahkan dir python pengguna saya ke file myapp.wsgi. Sebagai contoh:

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

Saya kira jika Anda menginstal paket di lingkungan global, Anda seharusnya tidak memiliki masalah, tetapi saya menginstal paket python sebagai pengguna.

Julian
sumber
atau dengan melakukan iniexport PYTHONPATH=/root/environments/my_env/lib/python3.6/site-packages/
Carlos Oliveira
Bekerja keras untuk saya, terima kasih!
ajoros
7

Setelah mengaktifkan lingkungan virtual dan menginstal Flask, saya membuat file app.py. Saya jalankan seperti ini: python -m flask run. Semoga ini bisa membantu!

Bogdan001
sumber
Tidak yakin mengapa ini berhasil, mungkin ada hubungannya dengan jalur. Ada wawasan tentang ini?
nscalf
5

Saya memiliki masalah yang sama dengan flasgger.

Alasannya adalah karena saya selalu menggunakan

sudo pip install flask

tetapi untuk beberapa alasan, itu tidak selalu menjadi pilihan. Terkadang, Anda harus melakukannya

pip install flask

Gotcha lain adalah terkadang orang mengetik pip install Flaskdengan topi F.

Posting ini di sini kalau-kalau ada yang buntu. Beri tahu saya jika itu membantu.

Tautan yang Berguna: Apa perbedaan antara pip install dan sudo pip install?

aneesh joshi
sumber
5

inilah yang berhasil untuk saya,

sudo -H pip install flask

Atau untuk pip3 (python3) gunakan:

sudo -H pip3 install flask

Sidenote

Jika Anda menggunakan virtualenv, ada baiknya pip freeze >> requirements.txt untuk mengizinkan paket yang diinstal dicantumkan di satu tempat. The sudokomando dan -Hbendera. Untuk lebih lanjut tentang sudo's -Hbendera, lihat Paulus jawabannya . Semoga ini bisa membantu Anda.

rawplutonium
sumber
3

Saya menggunakan python2 tetapi menginstal ini: sudo apt-get install libapache2-mod-wsgi-py3

Alih-alih: sudo apt-get install libapache2-mod-wsgi

Memperbaiki instalasi memecahkan masalah tanpa labu.

Norman Pilusa
sumber
1
Ah itu hal yang sederhana. Saya memiliki mod libapache wsgi yang salah di file galangan saya setelah memutakhirkan ke python 3 ... memiliki +1
Craicerjack
3

Dalam kasus saya, solusinya sesederhana memulai lingkungan virtual saya seperti:

$ venv/scripts/activate

Ternyata saya masih fresh dengan Python :)

Tawaran
sumber
2
  1. Edit /etc/apache2/sites-available/FlaskApp.conf
  2. Tambahkan dua baris berikut sebelum baris "WSGIScriptAlias":

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

  1. Mulai ulang Apache:service apache2 restart

Saya juga mengikuti tutorial Flask. Dan saya menemui masalah yang sama. Saya menemukan cara ini untuk memperbaikinya.

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

NingAnMe
sumber
1

Pergi ke file flask di microblog, kemudian aktifkan virtual environment dengan source bin/activate, kemudian pergi ke flask / bin dan instal flask, dan paket lainnya pip install flask,. Anda akan melihat flask terdaftar di dalam direktori bin. Coba jalankan ./run.pylagi dari mikroblog (atau dari mana pun Anda memiliki file).

Miguel
sumber
1

Bahkan saya juga menyarankan Anda virtualenv, Ini mungkin juga menyelesaikan masalah Anda.

sudo apt install python-flask

Jika Anda ingin menerapkan di productionserver maka lanjutkan dengan solusi di atas yang lain gunakan virtualenv.

yunus
sumber
1

Inilah yang berhasil untuk saya ketika saya mendapat kesalahan serupa di Windows; 1. Instal virtualenv

pip install virtualenve
  1. Buat virtualenv

    labu virtualenv

  2. Arahkan ke Scripts dan aktifkan virtualenv

    mengaktifkan

  3. Instal Flask

    python -m pip install flask

  4. Periksa apakah labu sudah terpasang

    daftar pip python -m

sammy ongaya
sumber
0

masuk ke mode interaktif python Anda lalu:

import sys

sys.path

itu akan mencetak jalur Anda. Periksa apakah flask sudah terpasang di sys.path.

Untuk MacOS, jalur python ada di /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

Tapi pip akan menginstal paket python secara default di bawah /Library/Python/2.7/site-packages

Itulah mengapa ini tidak berfungsi untuk MacOS.

Tao W
sumber
0

Skrip flask bagus untuk memulai server pengembangan lokal, tetapi Anda harus memulai ulang secara manual setelah setiap perubahan pada kode Anda. Itu tidak bagus dan Flask bisa melakukannya lebih baik. Jika Anda mengaktifkan dukungan debug, server akan memuat ulang dirinya sendiri pada perubahan kode, dan itu juga akan memberi Anda debugger yang berguna jika terjadi kesalahan. Untuk mengaktifkan mode debug, Anda dapat mengekspor variabel lingkungan FLASK_DEBUG sebelum menjalankan server: misalnya file Anda adalah hello.py

$ export FLASK_APP=hello.py
$ export FLASK_DEBUG=1
$ flask run
yasin lachini
sumber
0

dalam kasus saya menggunakan Docker, file .env saya tidak disalin, jadi env vars berikut tidak disetel:

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

jadi saya Dockerfileharus memasukkan:

FROM deploy as dev
COPY env ./env

yang direferensikan di docker-compose.yml

env_file: ./env/.env.local

Hal lain yang harus saya perhatikan adalah variabel jalur untuk memastikan lingkungan saya digunakan

ENV PATH $CONDA_DIR/envs/:my_environment_name_from_yml_file:/bin:$CONDA_DIR/bin:$PATH```
Sonic Soul
sumber
0

jawaban saya hanya untuk semua pengguna yang menggunakan proyek Web Visual Studio Flesk:

Cukup Klik Kanan pada "Lingkungan Python" dan Klik untuk "Tambahkan Lingkungan"

hossein andarkhora
sumber
0

Jika Anda menggunakan Pycharm maka ini adalah masalah lingkungan virtual.

Jadi, pada saat membuat proyek Python Anda, Anda harus memilih opsi "Penerjemah yang ada" -> klik "Penerjemah sistem" -> pilih opsi yang benar, misalnya "* \ AppData \ Local \ Programs \ Python \ Python3.6 \ python.exe ".

Anda juga dapat menggunakan 'New Virtual Env', tetapi saya baru saja memberikan perbaikan cepat yang seharusnya berfungsi untuk pengguna Pycharm.

Ashish Bansal
sumber
0

Hal lain - jika Anda menggunakan python3, pastikan Anda memulai server dengan python3 server.py, bukanpython server.py

Evan
sumber
-1

Ini berfungsi untuk saya setelah meningkatkan pip:

curl https://bootstrap.pypa.io/get-pip.py | python

Temukan jawabannya di sini: https://stackoverflow.com/a/49748494/3197202

Lalu saya bisa menginstal flask:

pip install flask
ivanacorovic.dll
sumber