【问题标题】:Install Scrapy in apache airflow will cause INVALID_ARGUMENT在 apache 气流中安装 Scrapy 会导致 INVALID_ARGUMENT
【发布时间】:2020-03-16 07:16:45
【问题描述】:

我正在尝试使用以下命令从 PyPi 安装 Scrapy

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

requirements.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.

有什么方法可以安装吗?

【问题讨论】:

  • 你能分享你的 GCP composer 镜像版本吗?
  • @mk_sta 谢谢。我正在使用apache-airflow==1.10.9

标签: google-cloud-platform scrapy airflow google-cloud-composer


【解决方案1】:

正如前面的答案所述,您现在收到的错误非常清楚,它是由错误的依赖格式引起的。它应该是scrapy==2.0.0 而不是requirements.txt 内的Scrapy==2.0.0

我想补充一点,以避免在修复格式时出现安装错误,您应该在列表中再添加一个依赖项,即attrs==19.2.0。通过指定以下列表,我能够将您的要求安装到我的环境中:

google-api-python-client==1.7.*
google-cloud-datastore==1.7.*
scrapy==2.0.0
attrs==19.2.0 

【讨论】:

    【解决方案2】:

    即使您根据PEP-508 文档先决条件调整requirements.txt 文件中的包名称,将某些包名称格式化为小写布局scrapy==2.0.0,问题很可能会保持不变并且更新过程将卡住错误:

    安装 PyPI 包失败

    一般来说,出现这种错误说明源 PyPI 包有一些外部依赖,或者这个包对 GCP Composer 不支持的某些系统级库敏感。

    在这种情况下,供应商推荐两种方法,要么使用 KubernetesPodOperator 构建自己的自定义映像并在特定的 Kubernetes Pod 中使用它,要么将 PyPi 包部署为 local Python library,将 PyPI 依赖项的共享对象库上传到 Airflow @987654327 @目录,查找更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-20
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 2021-06-09
      • 2014-08-02
      • 2013-05-22
      相关资源
      最近更新 更多