我有一个Flask应用程序,该应用程序在具有Apache 2.4.6,Python 3.6.6的Centos服务器上运行。当我直接通过Python启动我的应用程序并激活virtualenv时,一切正常。
但是,从Apache开始时,我得到以下ImportError
:
File "/var/www/my_app/util/database.py", line 13, in <module>
import psycopg2
File "/var/www/my_app/my-venv/lib/python3.6/site-packages/psycopg2/__init__.py", line 50, in <module>
from psycopg2._psycopg import ( # noqa
ImportError: No module named _psycopg
因此它无法导入psycopg2或它的子模块。当我在相同的virtualenv中启动Python控制台时,从相同的路径导入库可以正常工作。我不认为这是特定于psycopg2的,因为我在mysqlclient中遇到了同样的问题。
我确实检查过apache
用户是否可以完全读取virtualenv。我感到奇怪的是,确实我在psycopg2目录中找不到任何模块名称_psycopg
,但是当我从控制台内部导入库时(或直接通过Python启动应用程序时)为何起作用呢? ?
感谢任何指针!