2017-10-17 12 views
0

最近SQLAlchemyとPostgreSQLを使用してAmazon EC2インスタンスにFlaskアプリケーションをデプロイしました。Flaskアプリケーション: "ImportError:_psycopgという名前のモジュールがありません"

これらは、要件ファイルにリストされている依存関係を以下のとおりです。

click==6.7 
Flask==0.12.2 
Flask-Login==0.4.0 
Flask-SQLAlchemy==2.3.1 
itsdangerous==0.24 
Jinja2==2.9.6 
MarkupSafe==1.0 
psycopg2==2.7.3.1 
SQLAlchemy==1.1.14 
Werkzeug==0.12.2 
WTForms==2.1 

アプリケーションはWSGIファイルを使用してのUbuntu 16.xとApache 2.4にデプロイされます。アプリケーションは動作しますが、たとえばSQLAlchemyを使用してデータベースにクエリを実行するたびにエラーが発生します。

[Mon Oct 16 23:59:54.589811 2017] [wsgi:error] [pid 21547:tid 140180069140224] [remote 88.207.196.60:36925]  from psycopg2._psycopg import (     # noqa 
[Mon Oct 16 23:59:54.589813 2017] [wsgi:error] [pid 21547:tid 140180069140224] [remote 88.207.196.60:36925] ImportError: No module named _psycopg 

私はWSGIの展開と同じ仮想環境を使ってPythonコンソールを開くたびに、私はしかし、モジュールをインポートすることができるよ...

python 
from psycopg2 import _psycopg 

何この問題を引き起こす可能性が?

種類について、

B.
+0

あなたは、Apacheが使用している対のコマンドラインで使用しているPythonのバージョンチェック:あなたは、Python 3を使用する場合は、あなたの代わりにはこのように、Pythonの3のためのmod_wsgiの特定をインストールする必要があります。 – Cfreak

答えて

0

わかりましたので、私はこのファンキー問題への解決策を見つけました。

私はPython 3と仮想環境を使用していました。そこに問題はありません。

mod_wsgiのインストールが正しくないためにエラーが発生しました。

私はそれを介してインストール:

sudo apt-get install libapache2-mod-wsgi 

しかし、これは間違っています!

sudo apt-get install libapache2-mod-wsgi-py3 
+0

それは '代わりに'でなければならず、 'も必要です'ではありません。 Apacheは両方を同時に使用するのではなく、両方を同時に使用することはできません。 –

0

それによって正しいPythonのバージョンを使用しています。

仮想マシンとPythonパスはApacheで設定されています(下記のスニペットを参照)。また、SQLAlchemyで何もしないFlaskアプリケーション内のページ/ルートをサーフィンすると、ページが期待どおりに表示されます。

WSGIDaemonProcess myapp python-home=/usr/bin/python3 python-path=/home/ubuntu/envs/myapp/lib/python3.5/site-packages:/home/ubuntu/apps/myapp user=ubuntu group=ubuntu threads=5 
+0

'' site-packages''を参照するのに '' python-path''を使わないでください。より良い方法は、 '' python-home''を使って仮想環境のルートを参照することです。 http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html –

+0

を参照してください。 python-homeを正しく使用するように設定を変更しました。 – Braek

関連する問題