Установка Scrapy в apache воздушном потоке вызовет INVALID_ARGUMENT - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь установить Scrapy из PyPi, используя следующую команду.

gcloud composer environments update $(AIRFLOW_ENVIRONMENT_NAME) \
    --update-pypi-packages-from-file requirements.txt \
    --location $(AIRFLOW_LOCATION)

needs.txt похож на это.

google-api-python-client==1.7.*
google-cloud-datastore==1.7.*
Scrapy==2.0.0

После запуска gcloud команда, это вызовет недопустимый аргумент, но он успешно работает в локальной среде.

gcloud composer environments update xxxx \
        --update-pypi-packages-from-file requirements.txt \
        --location asia-northeast1
ERROR: (gcloud.composer.environments.update) INVALID_ARGUMENT: Found 1 problem:
        1) Error validating key Scrapy. PyPi dependency name is not formatted properly. It must be lowercase and follow the format of 'identifier' specified in PEP-508.

Есть ли способ установить?

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Как указывалось в предыдущем ответе, ошибка, которую вы получаете сейчас, совершенно ясна и вызвана неправильным форматированием зависимости. Это должно быть scrapy==2.0.0 вместо Scrapy==2.0.0 внутри requirements.txt.

. Я хотел бы добавить, что, чтобы избежать ошибки установки при исправлении форматирования, вы должны добавить еще одну зависимость в свой список и это attrs==19.2.0. Я смог установить ваши требования в моей среде, указав следующий список:

google-api-python-client==1.7.*
google-cloud-datastore==1.7.*
scrapy==2.0.0
attrs==19.2.0 
0 голосов
/ 17 марта 2020

Даже если вы измените имя пакета в requirements.txt файле в соответствии с PEP-508 предварительными условиями документа, отформатировав имя пакета certan в макете в нижнем регистре scrapy==2.0.0, проблема, скорее всего, останется прежней и процесс обновления застрянет с ошибкой:

Не удалось установить пакеты PyPI

Обычно возникает ошибка такого рода, тогда исходный пакет PyPI имеет некоторые внешние зависимости или этот пакет чувствителен в некоторых библиотеках системного уровня, которые GCP Composer не поддерживает.

В этом случае поставщик рекомендует два способа: либо использовать KubernetesPodOperator для создания собственного пользовательского образа и использовать его, в частности, Kubernetes. Подложите или разверните пакет PyPi как локальную Python библиотеку , загрузив библиотеки общих объектов для зависимости PyPI в каталог Airflow /plugins, дополнительную информацию здесь .

...