【问题标题】:flaskr tutorial; can't import flaskr (initialize database)烧瓶教程;无法导入flaskr(初始化数据库)
【发布时间】:2012-08-20 12:53:07
【问题描述】:

我是编程新手,并尝试完成烧瓶教程。 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

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

【问题讨论】:

    标签: python import flask


    【解决方案1】:

    为我解决问题的事情正在改变

    export FLASK_APP=flaskr
    

    export FLASK_APP=flaskr.py
    

    取自here

    【讨论】:

      【解决方案2】:

      完成所需任务的最简单方法是在与 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 后,您应该能够运行应用程序并看到一切正常。

      【讨论】:

      • 哇,感谢您的快速周转!这是一个非常有用的解释,我能够启动并运行该应用程序。再次感谢。
      • @JamieB - 很高兴我能帮上忙!享受教程。
      • 当我通过 Python 解释器进行导入时,我得到 RuntimeError: Working outside of application context.
      • 这是我的问题的解决方案:reddit.com/r/flask/comments/265gdi/…
      【解决方案3】:

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

      pip install flask-cli
      

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

          当我们说:

          export FLASK_APP=flaskr
          

          python 绝不会理解包“flaskr.py”的存在位置。

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

          export PYTHONPATH=`pwd`
          

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

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

          【讨论】:

            【解决方案6】:

            Sean Viera 的回答非常好,尽管我想补充一点,我遇到了同样的问题并想添加到解决方案中。从同一个 flaskr 文件夹中运行 Python 对我来说还不够。在运行 $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()
            $
            

            希望额外的信息有所帮助!

            【讨论】:

              【解决方案7】:
              $set FLASK_APP=flaskr
              $python -m flask initdb
              $python -m flask run
              

              【讨论】:

                【解决方案8】:

                试试这个:

                操作系统: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 是为 system-env 安装的

                (venv)$pip install -I Flask 可以强制(重新)安装 flask 用于虚拟环境

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

                【讨论】:

                  【解决方案9】:

                  我有同样的问题,我已经解决了。 第一步:

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

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

                  标题

                  【讨论】:

                  • 运行前导出 PYTHONPATH=pwdflask run
                  猜你喜欢
                  • 2011-07-21
                  • 1970-01-01
                  • 2020-09-23
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-11-27
                  • 2020-11-17
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多