添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I'm following the Flask tutorial here:

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

I get to the point where I try ./run.py and I get:

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

This looks similar to:

ImportError: No module named flask

But their solutions aren't helpful. For reference, I do have a folder named flask which one user mentioned may cause issues.

@MalikBrahimi When I run Python and then import flask and check what version I have installed, it gives back "0.10.1". So it looks like I have it installed... – anon_swe Jul 6, 2015 at 18:16 You're saying if you run python and then do import flask you have no errors? Is it possible you have to versions of python on your computer? – ari Jul 6, 2015 at 18:21 Can you insert import sys; print sys.path in that file (before the line where the error happens) and also run that in the interactive prompt? – ari Jul 6, 2015 at 18:25 @ari I tried to do the virtual environment thing but may have messed it up somehow? and yes, I'm using Python 3.3 but think I have 2.7 floating around – anon_swe Jul 6, 2015 at 18:50 You aren't using version 3, you are using version 2, and you have two copies of Python version 2 on your mac, one that came with OSX, and the other that you installed. So, all in all - it looks like you have three versions of Python; Python3, Python2 (you installed), Python2 (came with the system). Sounds like you aren't using the correct environment here; where you have installed Flask is not the system default, and this is likely the cause of your headache. – Burhan Khalid Jul 6, 2015 at 19:27

Try deleting the virtualenv you created. Then create a new virtualenv with:

virtualenv flask

Then:

cd flask

Now let's activate the virtualenv

source bin/activate

Now you should see (flask) on the left of the command line.

Edit: In windows there is no "source" that's a linux thing, instead execute the activate.bat file, here I do it using Powershell: PS C:\DEV\aProject> & .\Flask\Scripts\activate)

Let's install flask:

pip install flask

Then create a file named hello.py (NOTE: see UPDATE Flask 1.0.2 below):

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"
if __name__ == "__main__":
    app.run()

and run it with:

python hello.py

UPDATE Flask 1.0.2

With the new flask release there is no need to run the app from your script. hello.py should look like this now:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World!"

and run it with:

FLASK_APP=hello.py flask run

Make sure to be inside the folder where hello.py is when running the latest command.

All the steps before the creation of the hello.py apply for this case as well

Hi, I'm very new for python. Everything just works fine with virtualenv in terminal. But, my problem is I'm using IDE Atom... can atom run the code at the same virtualenv environment? – boog Feb 13, 2019 at 7:56 Yes this works! Instead of doing pip install flask (which is for python 2), if you are using python3, you need to use pip3 install flask or other extensions of flask. To change your python version, you can use alias python="python3". – Agent 0 May 6, 2019 at 2:52

The only way I could solve was by adding my users python dir to myapp.wsgi file. As an example:

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

I guess that if you install the packages in the global enviroment, you should have no problem, but I had my python packages installed as user.

or by doing this export PYTHONPATH=/root/environments/my_env/lib/python3.6/site-packages/ – Carlos Oliveira Dec 16, 2019 at 0:25 Not sure why this is working, probably something to do with the path. Any insight on this? – nscalf Mar 22, 2019 at 1:15

pip install flask

Another gotcha is that sometimes people type pip install Flask with the cap F

Posting this here in case somebody gets stuck. Let me know if it helped.

Useful Link: What is the difference between pip install and sudo pip install?

If you're using virtualenv it's a good idea to pip freeze >> requirements.txt to allow for the installed packages to be listed in one place. The sudo command and -H flag. For more on sudo's -H flag, look at Paul's answer. Hope this helps you.

Ah its the simple things. I had the wrong libapache mod wsgi in my dockerfile after upgrading to python 3... have a +1 – Craicerjack Sep 21, 2017 at 15:16 /etc/apache2/sites-available/FlaskApp.conf
  • Add the following two lines before the "WSGIScriptAlias" line:
  • WSGIDaemonProcess FlaskApp python-home=/var/www/FlaskApp/FlaskApp/venv/FlaskApp WSGIProcessGroup FlaskApp

  • Restart Apache:service apache2 restart
  • I'm following the Flask tutorial too.And I met the same problem.I found this way to fix it.

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

    In my case the solution was as simple as starting up my virtual environment like so:

    $ venv/scripts/activate

    It turns out I am still fresh to Python :)

    Go to the flask file in microblog, then activate the virtual environment with source bin/activate, then go to flask/bin and install flask, and the rest of the packages, pip install flask. You will see flask listed inside bin directory. Try to run ./run.py again from microblog (or from wherever you have the file).

    If you are using Pycharm then this is the virtual environment issue.

    So, at the time of creating your Python project you will have to select "Existing interpreter" option -> click "system Interpreter" -> select the correct option for example "*\AppData\Local\Programs\Python\Python3.6\python.exe".

    You can use 'New Virtual Env' as well, but I have just given the quick fix that should work for Pycharm users.

    it will print your path. Check wether flask is installed in the sys.path.

    For MacOS, python path is under /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

    But pip'll install python package by default under /Library/Python/2.7/site-packages

    That's why it doesn't work for MacOS.

    The flask script is nice to start a local development server, but you would have to restart it manually after each change to your code. That is not very nice and Flask can do better. If you enable debug support the server will reload itself on code changes, and it will also provide you with a helpful debugger if things go wrong. To enable debug mode you can export the FLASK_DEBUG environment variable before running the server: forexample your file is hello.py

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

    in my case using Docker, my .env file was not copied, so the following env vars were not set:

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

    so in my Dockerfile i had to include:

    FROM deploy as dev
    COPY env ./env
    

    which was referenced in docker-compose.yml

    env_file: ./env/.env.local

    another thing i had to pay attention to is the path variable to ensure my environment is used

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

    I had a similar problem using WSL and PyCharm / VSCode, the problem only occurred in the development environment and not in production. I realized that IDE's with WSL can have problems when exporting PYTHONPATH from their work directory and I started to do it manually.

    Before running your program and inside a VENV, try running the following command:

    export PYTHONPATH="path/my_user/code"
                    Hi... I am facing the same error. I have tried everything answered above, still getting same error. Could you please tell me how to do it manually. I am using VS Code. Python 3.9.5, flask 2.0.1
    – sandeep
                    Jul 27, 2021 at 15:39
                    Hey bro! Try using the command in the edited comment, and tell me about success or failed
    – Enderson Menezes
                    Jul 28, 2021 at 19:33
    

    In your case , the solution is :

    First:

    Open the terminal and navigate to the directory/folder where that python file is located ( in ur case the python file you created is run.py) and make sure you have installed flask in that same directory/folder.

    Second :

    Now , type the following command :

    $python3 "pythonfilename" (in ur case, its $python3 "run.py")

    I had the same error where it said flask module not found. this is what I did:

  • used venv to create a virtual environment $ python3.6 -m venv --without-pip virtual
  • activated the virtual environment using source virtual/bin/activate
  • downloaded pip into the virtual environment curl https://bootstrap.pypa.io/get-pip.py | python
  • installed flask using pip install flask
  • after running my application, all was good.

    As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center. – Community Jun 10, 2022 at 15:51

    Found that answer here: https://stackoverflow.com/a/49748494/3197202

    Then I could just install flask:

    pip install flask