我正在关注this guide并尝试开发一款Flask应用,以便在Google App Engine上运行。我按照指南写了这封信,但是当我从Launcher启动dev app服务器并转到http://localhost:8080/时,我收到HTTP 500错误。
我检查日志,然后显示No module named flask
。然后我通过运行import flask
检查管理控制台中的交互式控制台,我收到相同的错误消息。我可以在任何其他python文件中导入flask而不会出错。
有没有办法解决这个问题?
答案 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
;C:\Python27;C:\Python27\Scripts
并保存安装setuptools MS Windows安装程序(必须在Windows上安装PIP)
安装PIP
python setup.py install
安装Virtualenv
pip install virtualenv
mkdir c:\virtualenvs
以创建虚拟环境cd c:\virtualenvs
以访问该文件夹virtualenv flaskdemo
为您的项目创建virtualenv c:\virtualenvs\flaskdemo\scripts\activate
安装Google App Engine SDK
创建项目
(在这里查看代码示例:https://github.com/maxcnunes/flaskgaedemo/blob/master/initialize_gae.py)
安装Flask以便本地运行
pip install flask
安装Flask以在GAE上运行
使用GAE SDK运行应用程序
答案 1 :(得分:1)
通常,模板附带requirements.txt
。如果没有,请在那里添加依赖项,然后运行pip install -t lib -r requirements.txt
以强制将库保存在lib
文件夹中。
如果lib
已appengine_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)