烧瓶教程;无法导入flaskr(初始化数据库)

时间:2012-08-25 00:25:42

标签: python import flask

我是编程新手,并试图通过烧瓶教程。 http://flask.pocoo.org/docs/tutorial/

我在尝试运行应用时遇到了这一部分(来自github上的自述文件): https://github.com/mitsuhiko/flask/tree/master/examples/flaskr/

启动python shell并运行它:

from flaskr import init_db; init_db()

当我尝试在python shell中运行命令时出现此错误:

Import error: No module named flaskr

当我尝试在本地运行应用程序时出现此错误:

sqlite3.OperationalError
OperationalError: unable to open database file

我现在一直在寻找解决方案几个小时,但无济于事。 关于我能检查什么的任何想法?谢谢。

9 个答案:

答案 0 :(得分:24)

为我修复它的事情正在改变

export FLASK_APP=flaskr

export FLASK_APP=flaskr.py

取自here

答案 1 :(得分:5)

实现所需内容的最简单方法是在与使用flaskr相同的文件夹中启动Python shell:

# I'm assuming that python is available on the command line
$ cd path/to/flaskr
$ python

# Python then runs and you can import flaskr
>>> from flaskr import init_db; init_db()
>>> exit()

诀窍在于,当你运行Python时,它只能在modules and packages的某个位置查找 - 你可以通过运行来查看哪些地方:

>>> from sys import path
>>> for fp in path:
...     print fp
来自Python解释器的

。如果flaskr的路径不在该列表中,则无法导入flaskr。默认情况下,Python将其启动的目录添加到其搜索路径中(这就是我们在包含flaskr的目录中启动Python的原因。)

运行init_db之后,您应该能够运行该应用程序并查看所有工作。

答案 2 :(得分:4)

如果您使用的是Flask版本< 0.11,flask命令不可用。在这种情况下安装flask-cli包。

pip install flask-cli

答案 3 :(得分:2)

对于发现此问题的任何其他人,请将init_db()添加到主执行者,直至flaksr应用的末尾,如下所示:

if __name__ == '__main__':
    init_db()
    app.run()

这应解决sqlite错误并阻止您手动运行init_db()

答案 4 :(得分:2)

当我们说:

export FLASK_APP=flaskr

绝不是python了解包的位置" flaskr.py"存在。

解决问题的方法之一是选择正确的路径,其中" flaskr.py"驻留。例如,将当前工作目录更改为文件所在的位置:

export PYTHONPATH=`pwd`

然后你可以执行" flask run"你想要的任何地方。

PS:烧瓶教程似乎破了。 :)

答案 5 :(得分:0)

Sean Viera的答案非常好,虽然我想补充一点,我遇到了同样的问题,并希望添加到解决方案中。从同一个flaskr文件夹运行Python对我来说还不够。在运行$。之前,还需要通过运行“.venv / bin / activate”命令来激活Flask,如下所示:

$ cd path/to/flaskr
#active 
$ . venv/bin/activate 
(venv)$ python

# Python then runs and you can import flaskr
>>> from flaskr import init_db; 
>>> init_db()
>>> exit()
$

希望额外的信息有用!

答案 6 :(得分:0)

$set FLASK_APP=flaskr
$python -m flask initdb
$python -m flask run

答案 7 :(得分:0)

试试这个:

操作系统:Windows

(venv)$pip install -I --no-deps Flask
(venv)$set FLASK_APP=flaskr
(venv)$set FLASK_DEBUG=1
(venv)$flask run

说明:

$where flask将有助于找到 flask.exe

如果virtual-env从system-env继承 flask

(venv)$where flask
>> /system/environment/path/to/flask.exe

(root)$where flask
>> /system/environment/path/to/flask.exe

显然它调用了为系统环境

安装的 flask.exe

(venv)$pip install -I Flask可以强制(重新)安装 flask for virtual-env

(venv)$pip install -I Flask
(venv)$where flask
>> /virtual/environment/path/to/flask.exe
>> /system/environment/path/to/flask.exe

答案 8 :(得分:0)

我有同样的问题,并且已经解决。 步骤1:

  1. sudo ln -sf /usr/bin/python3.4 / usr / bin / python
  2. easy_install_3.4烧瓶。
  3. PYTHONPATH = pwd

第二步:使用easy_install_3.4安装falsk。 第三步:

标题