繁体   English   中英

使用 Google App Engine 时无法导入 Flask

[英]Can't import Flask while using Google App Engine

我正在遵循本指南并尝试开发一个 Flask 应用程序以在 Google App Engine 上运行。 我遵循了这封信的指南,但是当我从 Launcher 启动开发应用程序服务器并转到http://localhost:8080/ 时,出现 HTTP 500 错误。

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

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

与 GAE 和 Flask 一起工作,我意识到这一点:

直接用 Python 运行

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

使用 dev_appserver.py 运行

要使用 GAE SDK 提供的 dev_appserver.py 运行应用程序,您需要在项目中拥有所有依赖包,如:Flask、jinja2...在我的另一个答案中查看如何配置此包的示例: https://stackoverflow。 com/a/14248647/1050818

更新

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

安装 Python

  1. 安装 Python http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi
  2. 单击 Windows 开始按钮并通过“编辑系统环境”搜索并打开
  3. 转到选项卡高级并单击按钮“环境变量...”
  4. 当 Environment Variables 窗口打开时,从 System variables 列表中选择 Path 并单击 Edit...
  5. 将此;C:\\Python27;C:\\Python27\\Scripts到值的末尾并保存

安装 setuptools MS Windows 安装程序(需要在 Windows 上安装 PIP)

  1. 在此页面中为您选择正确的安装程序http://pypi.python.org/pypi/setuptools#files (我使用了这个: http : //pypi.python.org/packages/2.7/s/setuptools/setuptools- 0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20 )
  2. 下载安装程序并安装它

安装画中画

  1. 下载 PIP http://pypi.python.org/pypi/pip#downloads
  2. 解压到任意文件夹
  3. 从该目录中,键入python setup.py install

安装 Virtualenv

  1. 执行pip install virtualenv
  2. 执行这个mkdir c:\\virtualenvs来创建一个文件夹到 Virtual Envs
  3. 执行此cd c:\\virtualenvs以访问该文件夹
  4. 执行virtualenv flaskdemo为你的项目创建一个 virtualenv
  5. 激活 virtualenv c:\\virtualenvs\\flaskdemo\\scripts\\activate

安装 Google App Engine SDK

  1. 安装 SDK https://developers.google.com/appengine/downloads

创建项目

  1. 为您的项目创建一个目录
  2. 创建应用程序的主要内容https://github.com/maxcnunes/flaskgaedemo/blob/master/main.py
  3. 为 Google App Engine https://github.com/maxcnunes/flaskgaedemo/blob/master/app.yaml创建应用程序的配置
  4. 创建一个文件让 GAE 初始化您的应用程序https://github.com/maxcnunes/flaskgaedemo/blob/master/initialize_gae.py

(看这里的代码示例: https : //github.com/maxcnunes/flaskgaedemo

安装 Flask 以在本地运行

  1. 执行pip install flask

安装 Flask 以在 GAE 上运行

  1. 下载 Flask https://github.com/mitsuhiko/flask/archive/0.9.zip并解压项目中的 Flask 文件夹
  2. 下载 Werkzeug https://github.com/mitsuhiko/werkzeug/archive/0.8.3.zip并解压项目中的文件夹 werkzeug
  3. 下载 Jinja2 https://github.com/mitsuhiko/jinja2/archive/2.6.zip并解压项目中的文件夹 jinja2
  4. 下载 Simple Json https://github.com/simplejson/simplejson/archive/v3.0.5.zip并在您的项目中提取文件夹 simplejson

使用 GAE SDK 运行应用程序

  1. 打开 Google App Engine 启动器
  2. 添加新应用
  3. 运行应用程序
  4. 单击“浏览”按钮在浏览器上打开您的应用程序
  5. 最后单击 Deploy 按钮部署您的应用程序

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

请确保您已使用vendor.add('lib')lib添加到appengine_config.py vendor.add('lib')如果它尚未存在)。

我也面临着同样的问题,花了 1 天的时间在重构我的烧瓶应用程序时发现了我的愚蠢错误,我已经将appengine_config.py更改为其他名称。

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

from google.appengine.ext import vendor

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

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

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 模块不会加载。 不知道我应该使用开发服务器。 我觉得非常愚蠢。

作为参考,这里是 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()

您是否安装了 Python 的额外库组件? 它可以安装

gcloud components install app-engine-python-extras

安装这个额外的库后,您应该可以毫无问题地使用内置的烧瓶库。 有关更多信息,请参阅此页面

来源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM