Помилка імпорту колби: немає модуля з назвою колба


100

Тут я дотримуюсь підручника 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

Але їх рішення не корисні. Для довідки, я дійсно є папка з ім'ям флягу , які один користувач згаданий може викликати проблеми.


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, не є стандартною системою, і це, ймовірно, причина вашого головного болю.
Бурхан Халід

Відповіді:


146

Спробуйте видалити створений вами 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

ОНОВИТИ колбу 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 ... чи може атом запускати код в тому ж середовищі virtualenv?
buog

52

Для використання python 3

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


4
Після зміни моєї версії python з 2.7 на 3, це спрацювало!
Рікардо Сільва

Так це працює! Замість того, щоб робити колбу для встановлення pip (яка призначена для python 2), якщо ви використовуєте python3, вам потрібно використовувати колбу для встановлення pip3 або інші розширення колби. Щоб змінити версію python, ви можете використовувати псевдонім python = "python3".
Kourosh

11

Єдиний спосіб, який я міг вирішити, - це додавши моїх користувачів 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/
Карлос Олівейра

7

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


Не впевнений, чому це працює, можливо, це пов’язано із шляхом. Будь-яке розуміння з цього приводу?
nscalf

5

У мене була подібна проблема з флешмером.

Причиною цього було те, що я завжди користуюся

sudo pip install flask

але чомусь це не завжди шлях. Іноді доводиться робити просто

pip install flask

Ще одна помилка полягає в тому, що іноді люди друкують pip install Flaskз ковпачком F

Опублікувавши це тут на випадок, якщо хтось застрягне. Повідомте мене, якщо це допомогло.

Корисне посилання: Яка різниця між pip install та 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 mod wsgi у моєму докер-файлі після оновлення до 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


1

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


1

Навіть я теж пропоную u virtualenv, це також може вирішити вашу проблему.

sudo apt install python-flask

Якщо ви хочете розгорнути на виробничому сервері, перейдіть до вищевказаного рішення, інакше використовуйте virtualenv.


1

Це те, що спрацювало у мене, коли я отримав подібну помилку в Windows; 1. Встановіть virtualenv

pip install virtualenve
  1. Створіть virtualenv

    віртуаленв колба

  2. Перейдіть до Сценарії та активуйте virtualenv

    активувати

  3. Встановити колбу

    python -m pip встановити колбу

  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.


0

Сценарій колби добре запускає локальний сервер розробки, але вам доведеться перезапустити його вручну після кожної зміни вашого коду. Це не дуже приємно, і Flask може зробити краще. Якщо ви ввімкнете підтримку налагодження, сервер перезавантажиться при зміні коду, а також надасть вам корисний налагоджувач, якщо щось піде не так. Щоб увімкнути режим налагодження, ви можете експортувати змінну середовища FLASK_DEBUG перед запуском сервера: наприклад, ваш файл 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

ще одна річ, на яку мені довелося звернути увагу, - це змінна path, щоб забезпечити використання мого середовища

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

0

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

Просто клацніть правою кнопкою миші на "Середовище Python" і натисніть "Додати середовище"


0

Якщо ви використовуєте Pycharm, то це проблема віртуального середовища.

Отже, під час створення проекту Python вам потрібно буде вибрати параметр «Існуючий інтерпретатор» -> клацнути «System Interpreter» -> вибрати правильний параметр, наприклад «* \ AppData \ Local \ Programs \ Python \ Python3.6 \ python.exe ".

Ви також можете використовувати 'New Virtual Env', але я щойно дав коротке виправлення, яке має працювати для користувачів Pycharm.


0

Інша справа - якщо ви використовуєте python3, переконайтесь, що ви запускаєте свій сервер python3 server.py, а неpython server.py


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.