Implementar script de Python en la plataforma de nube Google

Estoy pensando en cómo implementar mi script en la plataforma de nube Google. Ya he creado un directorio o carpeta que contiene el script.py y todas las bibliotecas en la carpeta /lib .

lo que no consigo es configurar mi app.yaml para ejecutar script.py (python 2.7) y acceder a lib si es necesario.

Tampoco sé si necesito hacer requirments.txt ya que estoy usando bibliotecas de terceros.

Aquí están todas mis importaciones dentro de script.py

 import requests import re import mysql.connector from urlparse import urlparse from urlparse import urljoin from bs4 import BeautifulSoup 

Además, lo que tengo en mi lib son BeautifulSoup, peticiones y mysql.connector. No sé acerca de los otros, asumo que están incorporados en Python2.7 ya que no puedo instalarlos usando pip.

Estoy usando Windows 10 por cierto.

app.yaml

 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /lib/requests script: Scrape.app handlers: - url: /requests script: Scrape.app handlers: - url: /mysql/connector script: Scrape.app handlers: - url: /bs4/ script: Scrape.app 

cron.yaml

 cron: - description: "Scrape" url: / schedule: every 10 mins retry_parameters: min_backoff_seconds: 2.5 max_doublings: 10 

estoy recibiendo errores como

 Updating service [default]...failed. ERROR: (gcloud.app.deploy) Error Response: [9] Application startup error: /bin/sh: 1: Python: not found 

 Traceback (most recent call last): File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler handler, path, err = LoadObject(self._handler) File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject obj = __import__(path[0]) File "/base/data/home/apps/s~tribal-bonito-157700/20170302t182530.399552845921654287/Scrape.py", line 3, in  import requests ImportError: No module named requests 

Desde la fila del script en la tabla del elemento Handlers :

Una directiva script: debe ser una ruta de importación de Python, por ejemplo, package.module.app que apunta a una aplicación WSGI. El último componente de una directiva script: que usa una ruta del módulo Python es el nombre de una variable global en el módulo: esa variable debe ser una aplicación WSGI, y generalmente se llama aplicación por convención.

Nota: al igual que para una statement de importación de Python, cada subdirectorio que es un paquete debe contener un archivo llamado __init__.py

Recomiendo pasar un tiempo revisando los fragmentos de código de Quickstart para Python App Engine Standard Environment , donde verás una estructura básica de una aplicación simple.

Se puede usar un archivo Requirements.txt para especificar la lista de paquetes que se instalarán en el directorio lib , como esto:

pip install -r requirements.txt -t lib

Pero no es absolutamente necesario , los paquetes también pueden especificarse explícitamente directamente en el pip cmdline.