Flask ImportError: нет модуля с именем Flask

103

Я следую руководству по 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: нет модуля с именем flask

Но их решения бесполезны. Для справки, у меня есть папка с именем flask, которая, по словам одного пользователя, может вызвать проблемы.

Bclayman
источник
1
@MalikBrahimi Когда я запускаю Python, а затем импортирую flask и проверяю, какую версию я установил, он возвращает «0.10.1». Похоже, я установил его ...
bclayman 06
4
Вы говорите, если вы запустите python, а затем у import flaskвас нет ошибок? Возможно ли, что на вашем компьютере установлены версии Python?
ари
2
Можете ли вы вставить import sys; print sys.pathв этот файл (перед строкой, в которой происходит ошибка), а также запустить его в интерактивной подсказке?
ари
1
@ari Я пытался сделать виртуальную среду, но, возможно, как-то напортачил? и да, я использую Python 3.3, но думаю, что у меня есть 2.7, плавающий вокруг
bclayman 06
8
Вы не используете версию 3, вы используете версию 2, и у вас есть две копии Python версии 2 на вашем Mac, одна из которых поставляется с OSX, а другая установлена ​​вами. Итак, в общем - похоже, у вас есть три версии Python; Python3, Python2 (вы установили), Python2 (поставляется с системой). Похоже, вы здесь используете неправильную среду; место, где вы установили Flask, не является системным значением по умолчанию, и это, вероятно, причина вашей головной боли.
Burhan Khalid

Ответы:

148

Попробуйте удалить созданный вами файл virtualenv. Затем создайте новый virtualenv с помощью:

virtualenv flask

Затем:

cd flask

Теперь давайте активируем virtualenv:

source bin/activate

Теперь вы должны увидеть (flask)слева в командной строке.

Установим фляжку:

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

ОБНОВЛЕНИЕ Flask 1.0.2

В новом выпуске flask отпадает необходимость запускать приложение из вашего скрипта. 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.
Откат
Привет, я новичок в питоне. Все отлично работает с virtualenv в терминале. Но моя проблема в том, что я использую IDE Atom ... может ли атом запускать код в той же среде virtualenv?
boog
55

Для python 3 используйте

pip3 установить колбу

Халид Бин Худа
источник
4
После изменения моей версии Python с 2.7 на 3 это сработало!
Рикардо Силва
Да, это работает! Вместо выполнения pip install flask (что для python 2), если вы используете python3, вам необходимо использовать pip3 install flask или другие расширения flask. Чтобы изменить версию Python, вы можете использовать псевдоним python = "python3".
Курош
12

Единственный способ решить эту проблему - добавить мой пользовательский каталог python в файл 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/
Карлос Оливейра
Сработал для меня, спасибо!
ajoros
7

После активации виртуальной среды и установки Flask я создал файл app.py. Я бегу это так: python -m flask run. Надеюсь, это поможет!

Богдан001
источник
Не уверен, почему это работает, возможно, это связано с путем. Любое представление об этом?
nscalf
5

У меня была аналогичная проблема с flasgger.

Причина в том, что я всегда использую

sudo pip install flask

но по какой-то причине это не всегда правильный путь. Иногда вам нужно просто

pip install flask

Другой Гоча является то , что иногда люди типа pip install Flaskс крышкой F

Разместите это здесь на случай, если кто-то застрянет. Сообщите мне, помогло ли это.

Полезная ссылка: В чем разница между установкой pip и sudo pip install?

Аниш Джоши
источник
5

это то, что сработало для меня,

sudo -H pip install flask

Или для pip3 (python3) используйте:

sudo -H pip3 install flask

Примечание

Если вы используете 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
Ах, это простые вещи. У меня был неправильный мод libapache wsgi в моем dockerfile после обновления до python 3 ... есть +1
Craicerjack
3

В моем случае решение было таким простым, как запуск моей виртуальной среды следующим образом:

$ venv/scripts/activate

Оказывается, я еще новичок в Python :)

Ставка
источник
2
  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

NingAnMe
источник
1

Перейти к файлу колб в микроблоге, а затем активировать виртуальную среду с source bin/activate, а затем перейти в колбе / бункер и установить колбу, а остальные пакеты, pip install flask. Вы увидите колбу, указанную в каталоге bin. Попробуйте ./run.pyснова запустить из микроблога (или откуда у вас есть файл).

Мигель
источник
1

Даже я тоже предлагаю вам virtualenv, это также может решить вашу проблему.

sudo apt install python-flask

Если вы хотите развернуть сервер на продакшене, воспользуйтесь вышеуказанным решением, иначе используйте virtualenv.

Юнус
источник
1

Вот что сработало у меня, когда я получил аналогичную ошибку в Windows; 1. Установите virtualenv

pip install virtualenve
  1. Создать виртуальный

    флакон virtualenv

  2. Перейдите к Сценариям и активируйте virtualenv

    активировать

  3. Установить Flask

    python -m pip install flask

  4. Проверить, установлена ​​ли колба

    python -m список пипсов

Сэмми Онгая
источник
0

войдите в интерактивный режим Python, затем:

import sys

sys.path

он напечатает ваш путь. Убедитесь, что фляга установлена ​​в 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.

Тао W
источник
0

Сценарий flask хорош для запуска локального сервера разработки, но вам придется перезапускать его вручную после каждого изменения вашего кода. Это не очень хорошо, и Flask может работать лучше. Если вы включите поддержку отладки, сервер будет перезагружаться при изменении кода, а также предоставит вам полезный отладчик, если что-то пойдет не так. Чтобы включить режим отладки, вы можете экспортировать переменную среды FLASK_DEBUG перед запуском сервера: например, ваш файл - hello.py

$ export FLASK_APP=hello.py
$ export FLASK_DEBUG=1
$ flask run
Ясин Лачини
источник
0

в моем случае с использованием Docker мой файл .env не был скопирован, поэтому следующие переменные env не были установлены:

.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```
Sonic Soul
источник
0

мой ответ только для всех пользователей, которые используют веб-проект Visual Studio Flesk:

Просто щелкните правой кнопкой мыши «Среда Python» и щелкните «Добавить среду».

Хоссейн Андархора
источник
0

Если вы используете Pycharm, то это проблема виртуальной среды.

Итак, во время создания проекта Python вам нужно будет выбрать опцию «Существующий интерпретатор» -> щелкнуть «Системный интерпретатор» -> выбрать правильный вариант, например «* \ AppData \ Local \ Programs \ Python \ Python3.6 \» python.exe ".

Вы также можете использовать «New Virtual Env», но я только что дал быстрое исправление, которое должно работать для пользователей Pycharm.

Ашиш Бансал
источник
0

Другое дело - если вы используете python3, убедитесь, что вы запускаете сервер с python3 server.py, а неpython server.py

Эван
источник
-1

Это сработало для меня после обновления pip:

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

Нашел этот ответ здесь: https://stackoverflow.com/a/49748494/3197202

Тогда я мог бы просто установить колбу:

pip install flask
иванакорович
источник