Flask application: "ImportError: No module named _psycopg"
Flask application: "ImportError: No module named _psycopg"
我最近使用 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
什么可能导致这个问题?
亲切的问候,
B.
顺便说一下,它使用的是正确的 Python 版本。
虚拟机和 Python 路径在 Apache 中配置(参见下面的代码片段)。此外,当我在不使用 SQLAlchemy 执行任何操作的 Flask 应用程序中浏览 pages/routes 时,页面按预期提供。
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
好的,所以我找到了这个 funky 问题的解决方案。
我正在使用 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
我最近使用 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
什么可能导致这个问题?
亲切的问候, B.
顺便说一下,它使用的是正确的 Python 版本。
虚拟机和 Python 路径在 Apache 中配置(参见下面的代码片段)。此外,当我在不使用 SQLAlchemy 执行任何操作的 Flask 应用程序中浏览 pages/routes 时,页面按预期提供。
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
好的,所以我找到了这个 funky 问题的解决方案。
我正在使用 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