【问题标题】:No module named sendgrid in Python script in Heroku scheduler inside Rails appRails 应用程序内 Heroku 调度程序中的 Python 脚本中没有名为 sendgrid 的模块
【发布时间】:2016-04-06 23:06:23
【问题描述】:

我在 Heroku 上部署了一个 Rails 应用程序。我在 Rails bin 文件夹中也有一个 Python 脚本。我现在使用 Heroku 调度程序每 10 分钟运行一次 Python 脚本。我想先测试一下。所以我跑了:

heroku run python bin/notify.py

在我的本地终端中。然后我收到以下错误消息:

Running python bin/notify.py on ...
Traceback (most recent call last):
  File "bin/notify.py", line 6, in <module>
    import sendgrid
ImportError: No module named sendgrid

但是,我已经在 Heroku 上安装了 sendgrid 插件。我也可以毫无问题地在我的 Rails 代码中使用 sendgrid。

谁能帮我解决这个问题?谢谢!

【问题讨论】:

  • 你在使用 virtualenv 吗?如果是这样,您是否确认 sendgrid 已安装在该 virtualenv 中?或者您在尝试运行 python 脚本时正在使用 virtualenv?
  • 我使用 puma 作为这个 Rails 应用程序的网络服务器。我不知道virtualenv,所以我相信我没有使用它。
  • 在您的服务器上,您确认 sendgrid 确实存在?
  • 我使用了免费的 Heroku 帐户。我使用命令“heroku create”和“git push heroku”从我的 Mac 部署了它。我使用“heroku addons:create sendgrid:starter”在 Heroku 中添加了 sendgrid 插件。在我的 Rails 应用程序中,有一个“确认”按钮,它将通过 sendgrid 发送一封确认电子邮件。我已经检查过它有效。 Python 脚本从 API 中提取一些后端数据,并检查数据库并在满足要求时发送电子邮件通知。
  • 啊。这似乎非常特定于heroku。不幸的是,我没有使用那么多heroku。对我帮助不大,抱歉。 =/

标签: python ruby-on-rails heroku scheduler sendgrid


【解决方案1】:

听起来您在构建容器时忘记安装Python's sendgrid dependency。请参阅declare Python app dependencies 了解如何安装 Python 依赖项。当您同时运行 ruby​​ 和 Python 时,您必须安装这两个 buildpack 以确保加载这两个依赖项。

【讨论】:

    【解决方案2】:

    我联系了 Heroku 技术支持。他们告诉我我必须同时安装 ruby​​ 和 python buildpack,并在应用程序根目录的 requirements.txt 中包含 sendgrid。

    https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app

    问题已解决。

    【讨论】:

    • 在这个问题沉默 6 小时后,你的速度变快了... ;)
    • 是的。我正忙于联系 Heroku 技术支持。
    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 2022-06-25
    • 2017-05-07
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 2021-03-29
    相关资源
    最近更新 更多