

以下のコードをデプロイしようとすると、エラーで落ちてしまいます。  
どうすれば、sendgridをBluemixにインストールできますか？教えてください。

**エラーメッセージ:**

[code]

    Traceback (most recent call last):
      File "server.py", line 10, in <module>
        import sendgrid
    ImportError: No module named sendgrid
    
[/code]

**現状のコード:**

[code]

    #!/usr/bin/env python
    #! coding: UTF-8
    import urllib2
    import base64
    import zlib
    import json
    import sys
    import ssl
    import datetime
    import sendgrid
    import sqlalchemy
    from sqlalchemy import *
    import ibm_db_sa.ibm_db_sa
    db2 = sqlalchemy.create_engine('ibm_db_sa://dash013754:password@bluemix05.bluforcloud.com:50000/BLUDB')
    metadata = MetaData()
    users = Table('users', metadata, 
    Column('user_id', Integer, primary_key = True),
    Column('user_name', String(16), nullable = False),
    Column('email_address', String(60), key='email'),
    Column('password', String(20), nullable = False)
    )
    metadata.bind = db2
    metadata.create_all()
    users_table = Table('users', metadata, autoload=True, autoload_with=db2)
    users_table
    
    # using SendGrid's Python Library - https://github.com/sendgrid/sendgrid-python
    sg = sendgrid.SendGridClient(api_user, api_key)
    message = sendgrid.Mail()
    message.add_to("ntadashi@jp.ibm.com")
    message.set_from("ntadashi@sendgrid.com")
    message.set_subject("Sending with SendGrid is Fun")
    message.set_html(stmt)
    
    sg.send(message)
    
[/code]


CC BY-SA 4.0
2015-07-16T09:32:22.183
12413
2022-12-27T04:44:17.920
2022-12-27T04:44:17.920
3060
10520
question
python bluemix
Bluemix 上の Python で sendgrid モジュール使用時にエラー ImportError: No module named sendgrid


sendgrid を使い始める際に `pip install sendgrid`
等のコマンドを実行したと思いますが、これはお手元の環境にそのパッケージが入っていないからです。同じことが Bluemix
上でも言えますから、仰る通りインストール作業が必要になります。

この作業は Bluemix の場合、requirements.txt に依存関係を記述することで行うようです。

[http://www.ibm.com/developerworks/jp/cloud/library/cl-worldbank-charting-
app/](http://www.ibm.com/developerworks/jp/cloud/library/cl-worldbank-
charting-app/#1.4.1.Step3.PreparetodeploytheapplicationtoIBMBluemix%7Coutline)

> プロジェクトのルート・ディレクトリーに requirement.txt ファイルを追加します。requirement.txt
> ファイルには、グラフ生成アプリケーションを実行するために必要なすべての外部依存関係 (Django や PyMongo など)
> を含める必要があります。このアプリケーションが実行されたときに、requrement.txt
> ファイルが読み取られること、そしてこのファイルに記載されている依存関係がインストールされることが、Bluemix によって確実になります。

requirements.txt は Heroku 等でも使えますし、日本語の資料も多数見つかるかと思います。

* * *

sendgrid をはじめとする各種パッケージは [PyPi](https://pypi.python.org/pypi) というサイトに登録されています。
`pip install` もしくは `easy_install` すると、このサイトから最新バージョンを調べ、インストールします。

<https://pypi.python.org/pypi/sendgrid>

今回の場合も、Bluemix 上には sendgrid パッケージがないので、 PyPi 上から sendgrid
パッケージをインストールすることになります。その上で、どのパッケージを選択するかを指示するのが requirements.txt ということになります。

よって、あなたが Bluemix 上で使いたい sendgrid のバージョンを記述する必要があります。

もし手元で使っているのと同じバージョンを指定したいのであれば、 `pip freeze` コマンドで requirements.txt
と互換性のあるリストを出力できます。下記の記事をご一読ください。

[Python Tips：ライブラリをまとめてインストールしたい - Life with
Python](http://www.lifewithpython.com/2014/03/python-install-multiple-
modules-.html)


CC BY-SA 3.0
2015-07-16T12:05:18.580
12420
2015-07-16T13:02:59.310
2015-07-16T13:02:59.310
8000
8000
12413
answer