使用Google App Engine时无法导入Flask

时间:2012-04-14 05:32:58

标签: python google-app-engine flask

我正在关注this guide并尝试开发一款Flask应用,以便在Google App Engine上运行。我按照指南写了这封信,但是当我从Launcher启动dev app服务器并转到http://localhost:8080/时,我收到HTTP 500错误。

我检查日志,然后显示No module named flask。然后我通过运行import flask检查管理控制台中的交互式控制台,我收到相同的错误消息。我可以在任何其他python文件中导入flask而不会出错。

有没有办法解决这个问题?

5 个答案:

答案 0 :(得分:9)

与GAE和Flask合作我已经意识到这一点:

直接使用Python

要直接使用python(python app.py)运行应用程序,您需要使用以下命令在您的环境中安装dependents包:pip install flask

使用dev_appserver.py运行

要使用GAE SDK提供的dev_appserver.py运行应用程序,您需要在项目中包含所有依赖包,如:Flask,jinja2 ...在我的另一个答案中查看如何配置此包的示例:{{3 }}

已更新

在Windows上运行Python,Virtualenv,Flask和GAE

安装Python

  1. 安装Python https://stackoverflow.com/a/14248647/1050818
  2. 单击Windows“开始”按钮,然后按“编辑系统环境”进行搜索并打开
  3. 转到“高级”选项卡,然后单击“环境变量...”按钮
  4. 当“环境变量”窗口打开时,从“系统变量”列表中选择“路径”,然后单击“编辑...”
  5. 在值的末尾添加此;C:\Python27;C:\Python27\Scripts并保存
  6. 安装setuptools MS Windows安装程序(必须在Windows上安装PIP)

    1. 在此页面中为您选择正确的安装程序http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi(我使用了这个:http://pypi.python.org/pypi/setuptools#files
    2. 下载安装程序并安装
    3. 安装PIP

      1. 下载PIP http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20
      2. 将其解压缩到任何文件夹
      3. 从该目录中键入python setup.py install
      4. 安装Virtualenv

        1. 执行pip install virtualenv
        2. 执行此mkdir c:\virtualenvs以创建虚拟环境
        3. 的文件夹
        4. 执行此cd c:\virtualenvs以访问该文件夹
        5. 执行virtualenv flaskdemo为您的项目创建virtualenv
        6. 激活virtualenv c:\virtualenvs\flaskdemo\scripts\activate
        7. 安装Google App Engine SDK

          1. 安装SDK http://pypi.python.org/pypi/pip#downloads
          2. 创建项目

            1. 为项目创建目录
            2. 创建应用程序的主要内容https://developers.google.com/appengine/downloads
            3. 为Google App Engine https://github.com/maxcnunes/flaskgaedemo/blob/master/main.py
            4. 创建应用程序配置
            5. 创建一个文件,让GAE初始化您的应用https://github.com/maxcnunes/flaskgaedemo/blob/master/app.yaml
            6. (在这里查看代码示例:https://github.com/maxcnunes/flaskgaedemo/blob/master/initialize_gae.py

              安装Flask以便本地运行

              1. 执行pip install flask
              2. 安装Flask以在GAE上运行

                1. 下载Flask https://github.com/maxcnunes/flaskgaedemo并解压缩项目中的文件夹
                2. 下载Werkzeug https://github.com/mitsuhiko/flask/archive/0.9.zip并解压缩项目中的werkzeug文件夹
                3. 下载Jinja2 https://github.com/mitsuhiko/werkzeug/archive/0.8.3.zip并解压缩项目中的文件夹jinja2
                4. 下载Simple Json https://github.com/mitsuhiko/jinja2/archive/2.6.zip并解压缩项目中的simplejson文件夹
                5. 使用GAE SDK运行应用程序

                  1. 打开Goog​​le App Engine Launcher
                  2. 添加新应用程序
                  3. 运行应用程序
                  4. 单击“浏览”按钮在浏览器上打开您的应用程序
                  5. 最后点击“部署”按钮以部署您的应用程序

答案 1 :(得分:1)

通常,模板附带requirements.txt。如果没有,请在那里添加依赖项,然后运行pip install -t lib -r requirements.txt以强制将库保存在lib文件夹中。

如果libappengine_config.py,那么请确保vendor.add('lib')已添加到wget -O /some/where/file1.gz http://some.url.com/data/ wget -O /some/where/file2.gz http://some.url.com/data/

答案 2 :(得分:0)

tldr:使用appengine_config.py并将你的virtualenv复制到一个名为lib的文件夹,然后确保你通过dev_appserver.py

运行应用程序

(以下是ubuntu中的bash) 经过长时间的战斗后,我发现虚拟环境和gcloud不会很好玩 -

我复制了虚拟环境

中的所有内容
.../.virtualenvs/nimble/local/lib/python2.7/site-packages

[projectdir]/lib

并且我的appengine_config.py最终在本地工作,就像它在云中一样,但我绝对必须运行

dev_appserver.py [my proj dir here]

或google.appengine模块不会加载。不知道我应该使用dev服务器。我感到非常愚蠢。

供参考,下面是appengine_config.py

"""`appengine_config` gets loaded when starting a new application instance."""

print 'running app  config yaya!'

from google.appengine.ext import vendor
vendor.add('lib')
print 'I am the line after adding lib, it should have worked'
import os
print os.getcwd()

答案 3 :(得分:0)

我也遇到了同样的问题,在花了一天之后就发现了我的愚蠢错误,实际上在重构我的烧瓶应用程序时我已经改变了  appengine_config.py以其他名字命名。

如果您只在appengine_config.py文件夹中拥有所有依赖项,那么理想情况下lib应该如下所示

from google.appengine.ext import vendor

#Add any libraries installed in the "lib" folder.
vendor.add('lib')

因为它无法找到并执行appengine_config.py所以lib文件夹未被注册为依赖文件夹。要检查您是否可以尝试在appengine_config.py中打印一些内容,以检查它是否在服务器启动时执行。

答案 4 :(得分:0)

您是否安装了适用于Python的Extra Libraries组件?可以安装

gcloud components install app-engine-python-extras

安装此额外的库后,您应该可以使用内置的flask库,而不会出现问题。有关更多信息,请参阅this page

Source