前提・実現したいこと
仮想環境で、
flask run
を実行したときに、
ModuleNotFoundError: No module named 'psycopg2'
というエラーがでてしまいます。
一方で、同じプログラムを同じ環境で、
python3 app.py
と行うと正しく実行されるようです。
こちら、flask runの場合に、モジュールのインポートエラーが出てしまう理由としては、何が考えられるでしょうか?
他のサイトなどで、pipによるインストールが該当の仮想環境になっていないというケースがあるというのを聞き、
pip3 freeze
で確認しても、ただしくインストールがされているようでした。(そもそも、それだとインラインや、python3 app.pyで実行されるのも不思議。ありそうなのは、flask runの実行環境が、何かの設定でおかしな事になっているということでしょうか)
発生している問題・エラーメッセージ
Error: While importing "app", an ImportError was raised: Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/flask/cli.py", line 235, in locate_app __import__(module_name) File "/Users/osasai/Documents/01_Study/Python/project/flaskApp/app.py", line 2, in <module> import psycopg2 ModuleNotFoundError: No module named 'psycopg2'
該当のソースコード
python3
1from flask import Flask, render_template, request 2import psycopg2 3import psycopg2.extras 4 5app = Flask(__name__) 6 7conn = psycopg2.connect("dbname=flasknote") 8cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) 9 10@app.route('/',methods=['GET']) 11def index(): 12 cur.execute('SELECT * FROM messages') 13 messages = cur.fetchall() 14 messages = [ dict(message) for message in messages] 15 return render_template('index.html', messages=messages) 16 17 18@app.route('/post', methods=['GET']) 19def form(): 20 if request.method == 'GET': 21 return render_template('form.html')
試したこと
・pip3 freezeの実施
・PyCharmでのインラインでの実行(→エラーにならず、動きました)
補足情報(FW/ツールのバージョンなど)
MacOS Mojave
「PythonでWebサービスを作る Python3+Flaskで作るWebアプリケーション開発入門2 (中野 仁 著)」7.2章のテストコード
(flaskApp) OsamunoMacBook-Pro:flaskApp osasai$ pip3 freeze Click==7.0 Flask==1.0.2 itsdangerous==1.1.0 Jinja2==2.10 MarkupSafe==1.1.1 psycopg2==2.7.7 psycopg2-binary==2.7.7 Werkzeug==0.15.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/23 16:19 編集
2019/03/23 16:26
2019/03/23 16:42
2019/03/23 17:04
2019/03/23 17:06