Flask ImportError: Frasco sin nombre de módulo

100

Estoy siguiendo el tutorial de Flask aquí:

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

Llego al punto en el que intento ./run.py y obtengo:

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

Esto se parece a:

ImportError: ningún módulo llamado frasco

Pero sus soluciones no son útiles. A modo de referencia, que no tengo una carpeta llamada frasco de la cual un usuario mencionado puede causar problemas.

bclayman
fuente
1
@MalikBrahimi Cuando ejecuto Python y luego importo el matraz y verifico qué versión tengo instalada, devuelve "0.10.1". Así que parece que lo tengo instalado ...
bclayman
4
¿Estás diciendo que si ejecutas Python y luego no import flasktienes errores? ¿Es posible que tenga versiones de Python en su computadora?
ari
2
¿Puede insertarlo import sys; print sys.pathen ese archivo (antes de la línea donde ocurre el error) y también ejecutarlo en el indicador interactivo?
ari
1
@ari Traté de hacer el entorno virtual, pero es posible que lo haya estropeado de alguna manera. y sí, estoy usando Python 3.3 pero creo que tengo 2.7 flotando
bclayman
8
No está usando la versión 3, está usando la versión 2 y tiene dos copias de la versión 2 de Python en su mac, una que vino con OSX y la otra que instaló. Entonces, en general, parece que tiene tres versiones de Python; Python3, Python2 (que instaló), Python2 (vino con el sistema). Parece que no estás usando el entorno correcto aquí; el lugar donde ha instalado Flask no es el predeterminado del sistema, y ​​es probable que esta sea la causa de su dolor de cabeza.
Burhan Khalid

Respuestas:

146

Intente eliminar el virtualenv que creó. Luego crea un nuevo virtualenv con:

virtualenv flask

Luego:

cd flask

Ahora activemos el virtualenv:

source bin/activate

Ahora debería ver (flask)a la izquierda de la línea de comando.

Instalemos el matraz:

pip install flask

Luego cree un archivo llamado hello.py(NOTA: vea a UPDATE Flask 1.0.2continuación):

from flask import Flask
app = Flask(__name__)

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

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

y ejecutarlo con:

python hello.py

ACTUALIZAR Frasco 1.0.2

Con la nueva versión del matraz, no es necesario ejecutar la aplicación desde su script. hello.pydebería verse así ahora:

from flask import Flask
app = Flask(__name__)

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

y ejecutarlo con:

FLASK_APP=hello.py flask run

Asegúrese de estar dentro de la carpeta donde se hello.pyencuentra cuando ejecute el último comando.

Todos los pasos antes de la creación de hello.py también se aplican a este caso

Retroceder
fuente
3
Puede colocarlo en cualquier lugar siempre que lo ejecute con virtualenv habilitado.
Retroceso
Hola, soy muy nuevo en Python. Todo funciona bien con virtualenv en la terminal. Pero, mi problema es que estoy usando IDE Atom ... ¿Atom puede ejecutar el código en el mismo entorno virtualenv?
boog
52

Para uso de Python 3

matraz de instalación pip3

Khalid Bin Huda
fuente
4
Después de cambiar mi versión de Python de 2.7 a 3, ¡funcionó!
Ricardo Silva
¡Sí, esto funciona! En lugar de hacer pip install flask (que es para python 2), si está usando python3, necesita usar pip3 install flask u otras extensiones de flask. Para cambiar su versión de Python, puede usar alias python = "python3".
Kourosh
11

La única forma en que pude resolverlo fue agregando el directorio python de mis usuarios al archivo myapp.wsgi. Como ejemplo:

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

Supongo que si instala los paquetes en el entorno global, no debería tener ningún problema, pero yo tenía mis paquetes de Python instalados como usuario.

Julian
fuente
o al hacer estoexport PYTHONPATH=/root/environments/my_env/lib/python3.6/site-packages/
Carlos Oliveira
7

Después de activar el entorno virtual e instalar Flask, creé un archivo app.py. Me quedo así: python -m flask run. ¡Espero que esto ayude!

Bogdan001
fuente
No estoy seguro de por qué funciona, probablemente algo que ver con la ruta. ¿Alguna idea sobre esto?
nscalf
5

Tuve un problema similar con flasgger.

La razón de eso fue que siempre uso

sudo pip install flask

pero por alguna razón ese no es siempre el camino a seguir. A veces, tienes que hacer solo

pip install flask

Otro problema es que a veces la gente escribe pip install Flaskcon la gorra F

Publicando esto aquí en caso de que alguien se atasque. Avísame si te ayudó.

Enlace útil: ¿Cuál es la diferencia entre pip install y sudo pip install?

aneesh joshi
fuente
5

esto es lo que funcionó para mí,

sudo -H pip install flask

O para pip3 (python3) use:

sudo -H pip3 install flask

Nota al margen

Si está utilizando virtualenv, es una buena idea pip freeze >> requirements.txt permitir que los paquetes instalados aparezcan en un solo lugar. El sudocomando y la -Hbandera. Para más información sobre sudola -Hbandera de, mire la respuesta de Paul . Espero que esto te ayude.

plutonio crudo
fuente
3

Estaba usando python2 pero instalé esto: sudo apt-get install libapache2-mod-wsgi-py3

En lugar de: sudo apt-get install libapache2-mod-wsgi

La corrección de la instalación resolvió el problema de la falta de frasco.

Norman Pilusa
fuente
1
Ah, son las cosas simples. Tenía el wsgi del mod libapache incorrecto en mi archivo docker después de actualizar a Python 3 ... tengo un +1
Craicerjack
3

En mi caso, la solución fue tan simple como iniciar mi entorno virtual así:

$ venv/scripts/activate

Resulta que todavía estoy fresco en Python :)

Una oferta
fuente
2
  1. Editar /etc/apache2/sites-available/FlaskApp.conf
  2. Agregue las siguientes dos líneas antes de la línea "WSGIScriptAlias":

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

  1. Reinicie Apache:service apache2 restart

También sigo el tutorial de Flask y encontré el mismo problema, encontré esta manera de solucionarlo.

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

NingAnMe
fuente
1

Ir al archivo frasco en microblog, a continuación, active el entorno virtual con source bin/activate, y luego ir al frasco / bin e instalar frasco, y el resto de los paquetes, pip install flask. Verá el matraz listado dentro del directorio bin. Intente ejecutar de ./run.pynuevo desde microblog (o desde donde tenga el archivo).

Miguel
fuente
1

Incluso yo también sugiero u virtualenv, esto también podría resolver su problema.

sudo apt install python-flask

Si desea implementar en productionserver, continúe con la solución anterior; de lo contrario, use virtualenv.

Yunus
fuente
1

Esto es lo que funcionó para mí cuando obtuve un error similar en Windows; 1. Instale virtualenv

pip install virtualenve
  1. Crea un virtualenv

    matraz virtualenv

  2. Vaya a Scripts y active virtualenv

    activar

  3. Instalar matraz

    frasco de instalación de python -m pip

  4. Compruebe si el matraz está instalado

    python -m lista de pip

sammy ongaya
fuente
0

ingrese su modo interactivo de Python luego:

import sys

sys.path

imprimirá su ruta. Compruebe si el matraz está instalado en sys.path.

Para MacOS, la ruta de Python se encuentra en /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

Pero pip instalará el paquete python de forma predeterminada en /Library/Python/2.7/site-packages

Por eso no funciona para MacOS.

Tao W
fuente
0

El script del matraz es bueno para iniciar un servidor de desarrollo local, pero tendría que reiniciarlo manualmente después de cada cambio en su código. Eso no es muy agradable y Flask puede hacerlo mejor. Si habilita el soporte de depuración, el servidor se recargará a sí mismo en los cambios de código y también le proporcionará un depurador útil si algo sale mal. Para habilitar el modo de depuración, puede exportar la variable de entorno FLASK_DEBUG antes de ejecutar el servidor: por ejemplo, su archivo es hello.py

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

en mi caso, al usar Docker, mi archivo .env no se copió, por lo que no se establecieron las siguientes variables de entorno:

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

entonces en mi Dockerfiletuve que incluir:

FROM deploy as dev
COPY env ./env

al que se hizo referencia en docker-compose.yml

env_file: ./env/.env.local

Otra cosa a la que tuve que prestar atención es la variable de ruta para asegurar que se use mi entorno

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

mi respuesta solo para cualquier usuario que use el proyecto web Visual Studio Flesk:

Simplemente haga clic derecho en "Entorno Python" y haga clic en "Agregar entorno"

hossein andarkhora
fuente
0

Si está utilizando Pycharm, este es el problema del entorno virtual.

Entonces, al momento de crear su proyecto de Python, tendrá que seleccionar la opción "Intérprete existente" -> haga clic en "Intérprete del sistema" -> seleccione la opción correcta, por ejemplo "* \ AppData \ Local \ Programas \ Python \ Python3.6 \ python.exe ".

También puede usar 'New Virtual Env', pero acabo de dar la solución rápida que debería funcionar para los usuarios de Pycharm.

Ashish Bansal
fuente
0

Otra cosa: si está utilizando python3, asegúrese de iniciar su servidor con python3 server.py, nopython server.py

Evan
fuente