我最近使用SQLAlchemy和PostgreSQL将Flask应用程序部署到Amazon EC2实例。
这些是需求文件中列出的依赖项:
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
什么可能导致这个问题?
亲切的问候, 乙
答案 0 :(得分:0)
顺便说一下,它正在使用正确的Python版本。
虚拟机和Python路径在Apache中配置(请参阅下面的代码段)。此外,当我浏览Flask应用程序中不会对SQLAlchemy执行任何操作的页面/路径时,会按预期方式提供页面。
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
答案 1 :(得分:0)
好的,所以我找到了解决这个时髦问题的方法。
我使用的是Python 3和虚拟环境。没问题。
错误是由于 mod_wsgi
的安装错误造成的我通过以下方式安装了它:
sudo apt-get install libapache2-mod-wsgi
但这是错的!如果你想使用Python 3,你而不是必须安装特定于Python 3的mod_wsgi,如下所示:
sudo apt-get install libapache2-mod-wsgi-py3