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的文件夹,一个用户提到该文件夹​​可能会引起问题。


1
@MalikBrahimi当我运行Python然后导入flask并检查我安装的版本时,它返回“ 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,并且在Mac上拥有Python版本2的两个副本,一个副本是OSX随附的,另一个版本是您安装的。因此,总而言之-您似乎拥有三个版本的Python;Python3,Python2(已安装),Python2(系统附带)。听起来您在这里使用的环境不正确;您不是在系统默认位置安装Flask的,这可能是您头痛的原因。
Burhan Khalid

Answers:


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的情况下运行它,就可以将其放置在任何地方。
回滚

嗨,我是python的新手。一切在终端中的virtualenv都可以正常工作。但是,我的问题是我正在使用IDE Atom ... atom可以在相同的virtualenv环境中运行代码吗?
boog

55

对于python 3使用

pip3安装烧瓶


4
将我的python版本从2.7更改为3后,它开始工作了!
里卡多·席尔瓦

是的,这可行!如果您使用的是python3,则无需使用pip install flask(适用于python 2),而需要使用pip3 install flask或flask的其他扩展。要更改python版本,可以使用别名python =“ python3”。
Kourosh

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。希望这会有所帮助!


不知道为什么这行得通,可能与路径有关。有什么见解吗?
nscalf

5

我对flasgger也有类似的问题。

原因是我经常使用

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-H标志,看看保罗的 回答。希望对您有帮助。


3

我正在使用python2,但安装了它:sudo apt-get install libapache2-mod-wsgi-py3

代替:sudo apt-get install libapache2-mod-wsgi

纠正安装解决了no flask问题。


1
啊,这很简单。升级到python 3后,我在dockerfile中使用了错误的libapache mod wsgi ... +1
Craicerjack

3

就我而言,解决方案就像启动虚拟环境一样简单:

$ venv/scripts/activate

事实证明,我对Python还是很新鲜的:)



1

转到微博客中的flask文件,然后使用激活虚拟环境source bin/activate,然后转到flask / bin并安装flask,以及其余的软件包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. 安装烧瓶

    python -m pip安装烧瓶

  4. 检查烧瓶是否已安装

    python -m pip列表


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'll默认会在/Library/Python/2.7/site-packages下安装python软件包

这就是为什么它不适用于MacOS。


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

我必须注意的另一件事是path变量,以确保使用我的环境

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

0

我的回答仅适用于使用Visual Studio Flesk Web项目的所有用户:

只需右键单击“ Python环境”,然后单击“添加环境”


0

如果您使用的是Pycharm,则这是虚拟环境问题。

因此,在创建Python项目时,您必须选择“现有解释器”选项->单击“系统解释器”->选择正确的选项,例如“ * \ AppData \ Local \ Programs \ Python \ Python3.6 \ python.exe”。

您也可以使用“ New Virtual Env”,但我已经给出了适用于Pycharm用户的快速修复程序。


0

另一件事-如果你使用python3,请确保您正在使用启动服务器python3 server.py,而不是python server.py


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.