Flask ImportError: Kein Modul mit dem Namen Flask


98

Ich folge hier dem Flask-Tutorial:

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

Ich komme zu dem Punkt, an dem ich ./run.py versuche und ich bekomme:

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

Das sieht ähnlich aus wie:

ImportError: Kein Modul mit dem Namen flask

Aber ihre Lösungen sind nicht hilfreich. Als Referenz Ich kann habe einen Ordner mit dem Namen Kolben , die ein Benutzer erwähnten Probleme verursachen kann.


1
@MalikBrahimi Wenn ich Python starte und dann flask importiere und überprüfe, welche Version ich installiert habe, gibt es "0.10.1" zurück. Es sieht also so aus, als hätte ich es installiert ...
Bclayman

4
Sie sagen, wenn Sie Python ausführen und dann import flaskkeine Fehler haben? Ist es möglich, dass Sie Versionen von Python auf Ihrem Computer haben müssen?
Ari

2
Können Sie import sys; print sys.pathin diese Datei (vor der Zeile, in der der Fehler auftritt) einfügen und diese auch in der interaktiven Eingabeaufforderung ausführen?
Ari

1
@ari Ich habe versucht, die Sache mit der virtuellen Umgebung zu machen, habe sie aber vielleicht irgendwie durcheinander gebracht? und ja, ich benutze Python 3.3, aber ich glaube, ich habe 2.7 im
Umlauf

8
Sie verwenden nicht Version 3, Sie verwenden Version 2 und Sie haben zwei Kopien von Python Version 2 auf Ihrem Mac, eine mit OSX und die andere, die Sie installiert haben. Alles in allem sieht es so aus, als hätten Sie drei Versionen von Python. Python3, Python2 (installiert), Python2 (im Lieferumfang des Systems enthalten). Klingt so, als würden Sie hier nicht die richtige Umgebung verwenden. Wo Sie Flask installiert haben, ist nicht die Systemvorgabe, und dies ist wahrscheinlich die Ursache für Ihre Kopfschmerzen.
Burhan Khalid

Antworten:


143

Versuchen Sie, die von Ihnen erstellte virtuelle Umgebung zu löschen. Erstellen Sie dann eine neue virtuelle Umgebung mit:

virtualenv flask

Dann:

cd flask

Jetzt aktivieren wir die virtuelle Umgebung:

source bin/activate

Jetzt sollten Sie (flask)links in der Befehlszeile sehen.

Lassen Sie uns den Kolben installieren:

pip install flask

Erstellen Sie dann eine Datei mit dem Namen hello.py(HINWEIS: siehe UPDATE Flask 1.0.2unten):

from flask import Flask
app = Flask(__name__)

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

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

und führen Sie es aus mit:

python hello.py

UPDATE-Kolben 1.0.2

Mit der neuen Kolbenversion müssen Sie die App nicht über Ihr Skript ausführen. hello.pysollte jetzt so aussehen:

from flask import Flask
app = Flask(__name__)

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

und führen Sie es aus mit:

FLASK_APP=hello.py flask run

Stellen Sie sicher, dass Sie sich in dem Ordner hello.pybefinden, in dem sich der neueste Befehl befindet.

Alle Schritte vor der Erstellung von hello.py gelten auch für diesen Fall


3
Sie können es überall platzieren, solange Sie es mit aktivierter virtueller Umgebung ausführen.
Rollback

Hallo, ich bin sehr neu für Python. Mit virtualenv im Terminal funktioniert alles einwandfrei. Mein Problem ist jedoch, dass ich IDE Atom verwende. Kann Atom den Code in derselben virtuellen Umgebung ausführen?
Boog

51

Für Python 3 verwenden

pip3 Kolben einbauen


4
Nachdem ich meine Python-Version von 2.7 auf 3 geändert hatte, funktionierte es!
Ricardo Silva

Ja das funktioniert! Wenn Sie Python3 verwenden, müssen Sie anstelle von Pip Install Flask (für Python 2) Pip3 Install Flask oder andere Erweiterungen von Flask verwenden. Um Ihre Python-Version zu ändern, können Sie den Alias ​​python = "python3" verwenden.
Kourosh

11

Die einzige Möglichkeit, die ich lösen konnte, bestand darin, das Python-Verzeichnis meiner Benutzer zur Datei myapp.wsgi hinzuzufügen. Als Beispiel:

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

Ich denke, wenn Sie die Pakete in der globalen Umgebung installieren, sollten Sie kein Problem haben, aber ich hatte meine Python-Pakete als Benutzer installiert.


oder auf diese Weiseexport PYTHONPATH=/root/environments/my_env/lib/python3.6/site-packages/
Carlos Oliveira

7

Nachdem ich die virtuelle Umgebung aktiviert und Flask installiert hatte, erstellte ich eine app.py-Datei. Ich führe es so : python -m flask run. Hoffe das wird helfen!


Ich bin mir nicht sicher, warum dies funktioniert, wahrscheinlich etwas, das mit dem Pfad zu tun hat. Irgendwelche Einsichten dazu?
Nscalf

5

Ich hatte ein ähnliches Problem mit Blinker.

Der Grund dafür war, dass ich immer benutze

sudo pip install flask

Aber aus irgendeinem Grund ist das nicht immer der richtige Weg. Manchmal muss man einfach machen

pip install flask

Ein weiteres Problem ist, dass manchmal Leute pip install Flaskmit der Kappe F tippen

Poste dies hier, falls jemand stecken bleibt. Lassen Sie mich wissen, ob es geholfen hat.

Nützlicher Link: Was ist der Unterschied zwischen der Installation von Pip und der Installation von Sudo Pip?


5

das hat bei mir funktioniert,

sudo -H pip install flask

Oder für pip3 (python3) verwenden Sie:

sudo -H pip3 install flask

Randnotiz

Wenn Sie virtualenv verwenden, sollten Sie pip freeze >> requirements.txt zulassen, dass die installierten Pakete an einem Ort aufgelistet werden. Der sudoBefehl und die -HFlagge. Weitere Informationen zu sudo‚s -HFlagge, Blick auf Paulus ' Antwort . Hoffe das hilft dir.


3

Ich habe python2 verwendet, aber Folgendes installiert: sudo apt-get install libapache2-mod-wsgi-py3

Anstelle von: sudo apt-get install libapache2-mod-wsgi

Durch die Korrektur der Installation wurde das Problem ohne Kolben behoben.


1
Ah, es sind die einfachen Dinge. Ich hatte den falschen libapache mod wsgi in meiner Docker-Datei nach dem Upgrade auf Python 3 ... habe einen +1
Craicerjack

3

In meinem Fall war die Lösung so einfach wie das Starten meiner virtuellen Umgebung wie folgt:

$ venv/scripts/activate

Es stellt sich heraus, dass ich noch frisch in Python bin :)


2
  1. Bearbeiten /etc/apache2/sites-available/FlaskApp.conf
  2. Fügen Sie die folgenden zwei Zeilen vor der Zeile "WSGIScriptAlias" hinzu:

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

  1. Starten Sie Apache neu:service apache2 restart

Ich folge auch dem Flask-Tutorial. Und ich bin auf dasselbe Problem gestoßen. Ich habe diesen Weg gefunden, um es zu beheben.

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


1

Gehen Sie zur Flaschendatei im Microblog, aktivieren Sie die virtuelle Umgebung mit source bin/activate, gehen Sie zu Flask / Bin und installieren Sie den Kolben und den Rest der Pakete pip install flask. Sie sehen die Flasche im bin-Verzeichnis. Versuchen Sie ./run.pyerneut, über Microblog (oder von jedem Ort, an dem Sie die Datei haben) auszuführen .


1

Auch ich schlage u virtualenv vor, dies könnte auch Ihr Problem lösen.

sudo apt install python-flask

Wenn Sie in productionserver bereitstellen möchten, fahren Sie mit der oben genannten Lösung fort, andernfalls verwenden Sie virtualenv.


1

Dies hat bei mir funktioniert, als ich unter Windows einen ähnlichen Fehler bekam. 1. Installieren Sie virtualenv

pip install virtualenve
  1. Erstellen Sie eine virtuelle Umgebung

    virtuelle Flasche

  2. Navigieren Sie zu Skripten und aktivieren Sie die virtuelle Umgebung

    aktivieren Sie

  3. Installieren Sie den Kolben

    python -m pip Installierkolben

  4. Überprüfen Sie, ob der Kolben installiert ist

    Python-M Pip-Liste


0

Rufen Sie dann Ihren Python-Interaktionsmodus auf:

import sys

sys.path

Es wird Ihren Pfad drucken. Überprüfen Sie, ob der Kolben im sys.path installiert ist.

Unter MacOS befindet sich der Python-Pfad unter /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

Pip installiert das Python-Paket jedoch standardmäßig unter /Library/Python/2.7/site-packages

Deshalb funktioniert es unter MacOS nicht.


0

Das Flask-Skript ist gut geeignet, um einen lokalen Entwicklungsserver zu starten, aber Sie müssten es nach jeder Änderung Ihres Codes manuell neu starten. Das ist nicht sehr schön und Flask kann es besser machen. Wenn Sie die Debug-Unterstützung aktivieren, lädt sich der Server bei Codeänderungen neu und stellt Ihnen einen hilfreichen Debugger zur Verfügung, wenn Probleme auftreten. Um den Debug-Modus zu aktivieren, können Sie die Umgebungsvariable FLASK_DEBUG exportieren, bevor Sie den Server ausführen: Ihre Datei lautet beispielsweise hello.py

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

0

In meinem Fall mit Docker wurde meine ENV-Datei nicht kopiert, sodass die folgenden Umgebungsvariablen nicht festgelegt wurden:

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

also musste ich in mein aufnehmen Dockerfile:

FROM deploy as dev
COPY env ./env

auf die in docker-compose.yml verwiesen wurde

env_file: ./env/.env.local

Eine andere Sache, auf die ich achten musste, ist die Pfadvariable, um sicherzustellen, dass meine Umgebung verwendet wird

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

0

Meine Antwort nur für alle Benutzer, die Visual Studio Flesk Web Project verwenden:

Klicken Sie einfach mit der rechten Maustaste auf "Python-Umgebung" und klicken Sie auf "Umgebung hinzufügen".


0

Wenn Sie Pycharm verwenden, ist dies das Problem der virtuellen Umgebung.

Zum Zeitpunkt der Erstellung Ihres Python-Projekts müssen Sie also die Option "Vorhandener Interpreter" auswählen -> auf "Systeminterpreter" klicken -> die richtige Option auswählen, z. B. "* \ AppData \ Local \ Programs \ Python \ Python3.6 \" python.exe ".

Sie können auch 'New Virtual Env' verwenden, aber ich habe gerade die schnelle Lösung angegeben, die für Pycharm-Benutzer funktionieren sollte.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.