Развертывание скрипта Python на облачной платформе Google

Я выясняю, как развернуть мой скрипт на облачной платформе Google. я уже сделал каталог или папку, которая содержит script.pyи все библиотеки в /lib папка.

что я не получаю, это настраивает app.yaml бежать script.py (Python 2.7) и доступ lib если это необходимо.

Я также не знаю, если мне нужно сделать requirments.txt так как я использую сторонние библиотеки.

вот весь мой импорт внутри script.py

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

Кроме того, что у меня есть в моем lib Есть BeautifulSoup, запросы и mysql.connector. я не знаю о других, я предполагаю, что они встроены в python 2.7, так как я не могу установить их с помощью pip.

Я использую Windows 10, кстати.

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

я получаю ошибки как

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 <module>
import requests
ImportError: No module named requests

1 ответ

Из строки скрипта в таблице элементов Handlers:

Директива script: должна представлять собой путь импорта python, например, package.module.app, который указывает на приложение WSGI. Последний компонент директивы script: с использованием пути к модулю Python - это имя глобальной переменной в модуле: эта переменная должна быть приложением WSGI и обычно называется app по соглашению.

Примечание: так же, как для оператора импорта Python, каждый подкаталог, который является пакетом, должен содержать файл с именем __init__.py

Я бы порекомендовал потратить некоторое время на изучение фрагментов кода из стандартной среды Quickstart для Python App Engine, где вы увидите базовую структуру простого приложения.

requirements.txt файл может быть использован для указания списка пакетов, которые будут установлены в lib каталог, как это:

pip install -r requirements.txt -t lib

Но это не является абсолютно необходимым, пакеты могут быть явно указаны непосредственно на pip cmdline также.

Другие вопросы по тегам