【问题标题】:ModuleNotFoundError: No module named 'psycopg2' - DataflowModuleNotFoundError:没有名为“psycopg2”的模块 - 数据流
【发布时间】:2021-03-07 12:38:57
【问题描述】:

我一直在 stackoverflow 上寻找解决这个问题的方法:

我尝试了不同的方法,不幸的是我没有解决它。

场景:

我有一个 python 脚本,它通过 Apache Beam 从 Google Pubsub 读取消息。 每收到一条消息,我都会调用一个插入 PostgreSQL 表的过程:

我的方法使用 psycopg2 连接调用 PostgreSQL 存储过程:

在 DirectRunner 上运行我的代码,它运行良好。当我在 Dataflow 上运行它时,我收到了消息:

ModuleNotFoundError: 没有名为“psycopg2”的模块。

有人可以帮帮我吗?

谢谢, 朱利亚诺

【问题讨论】:

  • 这只是表明psycopg2 没有安装在您运行代码的任何位置。我不使用 DataFlow,因此以下是通用建议:1)如果可能,请在环境中安装 psycopg 2)找出“本机”连接库并使用它。
  • 嗨@AdrianKlaver,谢谢你的建议。当我转到 Google Cloud Platform 和“pip list”时,我安装了 psycopg2: psycopg2 2.8.6 psycopg2-binary 2.8.6 这就是我担心的原因,它已安装但我不能用它。 =(
  • 就像我说的我不使用 DataFlow,所以这超出了我的深度。最好的猜测是它运行在与pip list 不同的环境中。

标签: postgresql python-2.7 google-cloud-dataflow psycopg2 apache-beam


【解决方案1】:

Dataflow runner 是 Google Cloud Platform 中的临时集群。数据流运行器没有有您的本地库。您需要在运行数据流时在命令行中指定--requirements_file requirements.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-15
    • 2019-09-09
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多