質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • Python

    6799questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Cloud9

    384questions

    Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

AWS cloud9(python)でSQLAlchemyがインポート出来ない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 193

いつも大変お世話になっております。

タイトルの通り、AWS cloud9にて下記コードを実行したところ、インポートできず「ModuleNotFoundError: No module named 'SQLAlchemy'」が出てきてしまいました。

from SQLAlchemy import create_engine
from SQLAlchemy.orm import scoped_session, sessionmaker
from SQLAlchemy.ext.declarative import declarative_base
import os

databese_file = os.path.abspath('stockpile.db')
print(databese_file)

engine = create_engine('sqlite:///' + databese_file, convert_unicode=True)
Traceback (most recent call last):
  File "/home/ec2-user/environment/database.py", line 1, in <module>
    from SQLalchemy import create_engine
ModuleNotFoundError: No module named 'SQLAlchemy'

PYTHONPATHにも反映されているはずなのですが、どうしてもインポートできませんでした。

$ python -V
Python 3.6.2

$ which python
alias python='python36'
/usr/bin/python36

$ pip show SQLAlchemy
Name: SQLAlchemy
Version: 1.2.7
Summary: Database Abstraction Library
Home-page: http://www.sqlalchemy.org
Author: Mike Bayer
Author-email: mike_mp@zzzcomputing.com
License: MIT License
Location: /usr/local/lib/python3.6/site-packages
Requires: 
Required-by: 

$ echo $PYTHONPATH
/usr/local/lib/python3.6/site-packages:/usr/local/lib/python3.6/site-packages:/usr/local/lib/python3.6/site-packages:/usr/local/lib/python3.6/site-packages:/usr/local/lib/python3.6/site-packages:

となっております。

.bashrcにもPYTHONPATHを記載しております。

# .bashrc

PYTHONPATH="/usr/local/lib/python3.6/site-packages:$PYTHONPATH"
export PYTHONPATH

export PATH=$PATH:$HOME/.local/bin:$HOME/bin

# load nvm
export NVM_DIR="/home/ec2-user/.nvm"
[ "$BASH_VERSION" ] && npm() {
    # hack: avoid slow npm sanity check in nvm
    if [ "$*" == "config get prefix" ]; then which node | sed "s/bin\/node//";
    else $(which npm) "$@"; fi
}
# [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm
rvm_silence_path_mismatch_check_flag=1 # prevent rvm complaints that nvm is first in PATH
unset npm # end hack


# User specific aliases and functions
alias python=python36

# modifications needed only in interactive mode
if [ "$PS1" != "" ]; then
    # Set default editor for git
    git config --global core.editor /usr/bin/nano

    # Turn on checkwinsize
    shopt -s checkwinsize

    # keep more history
    shopt -s histappend
    export HISTSIZE=100000
    export HISTFILESIZE=100000
    export PROMPT_COMMAND="history -a;"

    # Source for Git PS1 function
    if ! type -t __git_ps1 && [ -e "/usr/share/git-core/contrib/completion/git-prompt.sh" ]; then
        . /usr/share/git-core/contrib/completion/git-prompt.sh
    fi

    # Cloud9 default prompt
    _cloud9_prompt_user() {
        if [ "$C9_USER" = root ]; then
            echo "$USER"
        else
            echo "$C9_USER"
        fi
    }

    PS1='\[\033[01;32m\]$(_cloud9_prompt_user)\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 " (%s)" 2>/dev/null) $ '
fi

どのようにすればSQLAlchemyを利用することが出来るでしょうか。
初心者ですので全く見当違いの事をしているかもしれませんが宜しくお願い致します。

追記:一度ログアウトして再度ログインすると、理由はわからないのですが、下記の通りモジュールのインストール先が変更されていました。
なので$PYTHONPATHに追加しましたが、今までと同様にModuleNotFoundErrorとなってしまいました。

ec2-user:~/environment $ pip show SQLAlchemy

Name: SQLAlchemy
Version: 1.2.7
Summary: Database Abstraction Library
Home-page: http://www.sqlalchemy.org
Author: Mike Bayer
Author-email: mike_mp@zzzcomputing.com
License: MIT License
Location: /home/ec2-user/.local/lib/python3.6/site-packages
Requires: 
Required-by: 

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

自分は質問者さんと環境は違いますが・・・モジュール名が違ってるのが原因な気がします。
全部小文字です。

import sqlalchemy   # <==これです
import sys

print(sys.version_info)
print('sqlalchemy.__version__', sqlalchemy.__version__)


Windows 10 64bit
Python 3.6.5
sqlalchemy 1.2.7

sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0)
sqlalchemy.__version__ 1.2.7
sqlalchemy.__file__ C:\Users\ksoh\PyCharmProjects\TeraApi\venv\lib\site-packages\sqlalchemy\__init__.py

pycharm上なのですが、確かにインストール済みモジュール一覧には「SQLAlchemy」と出てますね。このあたりPythonの環境設定はわれわれ初心者なかせかも知れません。自分もいまだに大文字小文字がどういう基準になってるのかさっぱりです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/23 20:41

    全て小文字にしたら解決いたしました!!
    ありがとうございます!!

    過去に、念のためと思いモジュール名を全て小文字にしてインポートしていた気もしたのですが…
    気のせいだったようです!

    キャンセル

  • 2018/05/23 20:47

    自分は最近installしたモジュールのソースを眺めたいことがあり、site-packegesの下からモジュールを探したりしますが、そういうことをすれば正確なファイル名がわかるという話はあるかも知れません。ディレクトリー名かファイル名がimportするときの名前になると思います。

    キャンセル

  • 2018/05/23 20:49

    わかりました!
    今後同じような事態が発生した時はsite-packeges以下を確認してみることにします!

    ご丁寧にありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    6799questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Cloud9

    384questions

    Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。