Развертывание скрипта 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 также.