Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't import Flask while using Google App Engine

I'm following this guide and trying to develop a Flask app to run on the Google App Engine. I followed the guide to the letter but when I launch the dev app server from the Launcher and go to http://localhost:8080/, I get a HTTP 500 error.

I check the logs and it says No module named flask. Then I check the interactive console in the admin console by running import flask and I get the same error message. I can import flask in any other python file without error.

Is there a way to fix this?

like image 742
Kylee Avatar asked Dec 10 '22 01:12

Kylee


2 Answers

Working a bit with GAE and Flask I have realized this:

Running directly with Python

To run the app with python directly (python app.py) you need have the dependents packages installed in your environment using the command: pip install flask

Running with dev_appserver.py

To run the app with the dev_appserver.py provided by GAE SDK you need have all dependent packages inside your project, as: Flask, jinja2... Look in my another answer a example how to configure this packages : https://stackoverflow.com/a/14248647/1050818

UPDATED

Running Python, Virtualenv, Flask and GAE on Windows

Install Python

  1. Install Python http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi
  2. Click in Windows Start button and search by "Edit the system environment" and open
  3. Go to the tab Advanced and click on button "Environment Variables…"
  4. When the Environment Variables window opens, choose Path from the System variables list and click Edit…
  5. Add this ;C:\Python27;C:\Python27\Scripts at the end of the value and save

Install setuptools MS Windows installer (Necessary to install PIP on Windows)

  1. Choose the correct installer for you in this page http://pypi.python.org/pypi/setuptools#files( I used this one: http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20)
  2. Download the installar and Install that

Install PIP

  1. Download PIP http://pypi.python.org/pypi/pip#downloads
  2. Extract it to any folder
  3. From that directory, type python setup.py install

Install Virtualenv

  1. Execute pip install virtualenv
  2. Execute this mkdir c:\virtualenvs to create a folder to the Virtual Envs
  3. Execute this cd c:\virtualenvs to access that folder
  4. Execute virtualenv flaskdemo to create a virtualenv for you project
  5. Active the virtualenv c:\virtualenvs\flaskdemo\scripts\activate

Install Google App Engine SDK

  1. Install the SDK https://developers.google.com/appengine/downloads

Create the project

  1. Create a directory for your project
  2. Create the main of your application https://github.com/maxcnunes/flaskgaedemo/blob/master/main.py
  3. Create the configuration of your appliction for Google App Engine https://github.com/maxcnunes/flaskgaedemo/blob/master/app.yaml
  4. Create a file to let GAE initialize your application https://github.com/maxcnunes/flaskgaedemo/blob/master/initialize_gae.py

(Look a example of the code here: https://github.com/maxcnunes/flaskgaedemo )

Install Flask to run Locally

  1. Execute pip install flask

Install Flask to run on the GAE

  1. Download Flask https://github.com/mitsuhiko/flask/archive/0.9.zip and extract the folder flask inside your project
  2. Download Werkzeug https://github.com/mitsuhiko/werkzeug/archive/0.8.3.zip and extract the folder werkzeug inside your project
  3. Download Jinja2 https://github.com/mitsuhiko/jinja2/archive/2.6.zip and extract the folder jinja2 inside your project
  4. Download Simple Json https://github.com/simplejson/simplejson/archive/v3.0.5.zip and extract the folder simplejson inside your project

Running the application with GAE SDK

  1. Open Google App Engine Launcher
  2. Add a new application
  3. Run the application
  4. Click in Browse button to open your application on browser
  5. Finally click on Deploy button to deploy your application
like image 52
maxcnunes Avatar answered Dec 19 '22 13:12

maxcnunes


Usually, templates come with a requirements.txt. If not, add your dependencies there and then run pip install -t lib -r requirements.txt to force the libraries to be saved in the lib folder.

Make sure you've added lib to appengine_config.py with vendor.add('lib') if it's not already there.

like image 33
jackar Avatar answered Dec 19 '22 12:12

jackar