2016-08-16 123 views
0

我试图通过WSGI我的Apache的Amazon EC2服务器上运行一个Python应用程序,和我不断收到此错误:导入错误:没有模块名为CV2 - WSGI +蟒蛇+ apache的

[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5] mod_wsgi (pid=28751): Target WSGI script '/var/www/html/lumos/wsgi.py' cannot be loaded as Python module. 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5] mod_wsgi (pid=28751): Exception occurred processing WSGI script '/var/www/html/lumos/wsgi.py'. 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5] Traceback (most recent call last): 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5] File "/var/www/html/lumos/wsgi.py", line 11, in <module> 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5]  import app 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5] File "/var/www/html/lumos/app.py", line 2, in <module> 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5]  import main 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5] File "/var/www/html/lumos/main.py", line 1, in <module> 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5]  import mod_one 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5] File "/var/www/html/lumos/mod_one.py", line 1, in <module> 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5]  import cv2 
[Tue Aug 16 18:22:57 2016] [error] [client 72.219.147.5] ImportError: No module named cv2 

这是该cv2.so文件位于(sudo find/-name "cv2.so"):

/var/www/html/lumos/opencv/build/lib/cv2.so 
/usr/local/lib/python2.7/dist-packages/cv2.so 

而且我已经设置了WSGI的Python路径是如该文件位于:

WSGIPythonPath /usr/local/lib/python2.7/site-packages/:/usr/local/lib/python2.7/dist-packages/ 

我知道OpenCV的安装是否正确,因为当我这样做,有没有错误:

$ python 
>>>import cv2 #no import error 
>>> 

当我安装的mod_wsgi,这是使用:

mod_wsgi-python26-3.2-6.11.amzn1.x86_64 

这里是我的wsgi.py文件

import os, sys 

sys.path.insert(0, "/var/www/html/lumos") 

import bottle 
import app 

application = bottle.default_app() #using bottle.py web-framework 

这里是我的httpd.conf:

WSGISocketPrefix /var/run/wsgi 
WSGIPythonPath /usr/local/lib/python2.7/site-packages/:/usr/local/lib/python2.7/dist-packages/ 

<VirtualHost *> 
ServerName lumos.website.me 
DocumentRoot /var/www/html/lumos 

WSGIDaemonProcess lumos threads=5 
WSGIScriptAlias//var/www/html/lumos/app.wsgi 
     <Directory "/var/www/html/lumos"> 
       WSGIProcessGroup lumos 
       WSGIApplicationGroup %{GLOBAL} 
       Order deny,allow 
       Allow from all 
     </Directory> 
</VirtualHost> 

当我运行python -V,我得到Python 2.7.10.

我怎样才能让mod_wsgi的工作,OpenCV的?任何帮助表示赞赏。

回答

0

好了,所以它的出现,是根据the docs,你不能使用daemon模式时使用WSGIPythonPath。

,所以我不得不指定Python路径甚至没有做任何事情。为了解决这个问题,我改用了'python-path'选项来代替WSGIDaemonProcess directive

在我httpd.conf文件,我删除了这一点:

WSGIPythonPath /usr/local/lib/python2.7/site-packages/:/usr/local/lib/python2.7/dist-packages/ 

而且改变了这一点:

WSGIDaemonProcess lumos threads=5 

要这样:

WSGIDaemonProcess lumos threads=5 python-path=/usr/local/lib/python2.7/site-packages/:/usr/local/lib/python2.7/dist-packages/ 

所以我最终httpd.conf看起来是这样的:

<VirtualHost *> 
ServerName lumos.website.me 
DocumentRoot /var/www/html/lumos 

WSGIDaemonProcess lumos threads=5 python-path=/usr/local/lib/python2.7/site-packages/:/usr/local/lib/python2.7/dist-packages/ 
WSGIScriptAlias//var/www/html/lumos/wsgi.py 
     <Directory "/var/www/html/lumos"> 
       WSGIProcessGroup lumos 
       WSGIApplicationGroup %{GLOBAL} 
       Order deny,allow 
       Allow from all 
     </Directory> 
</VirtualHost> 

现在CV2作品。因为mod_wsgi的是您要使用Python 2.7的安装编译为Python 2.6,并没有特别

0

你的设置是坏了。你不应该强制site-packagesdict-packages从你的Python 2.7安装到什么是一个Python 2.6环境模块搜索路径。首先,您仍在运行错误的Python版本,其次,这些目录中的任何扩展模块可能会失败并可能导致进程崩溃。

您必须卸载要从系统软件包使用mod_wsgi的安装编译为Python 2.7版本。由于您使用的是非标准Python安装,因此您可能需要从源代码构建mod_wsgi。

+0

我再次检查,并从错误日志中找到的WSGI版本实际上是过时的(因为我在错误日志中滚动非常远以找到该行)。实际上我已经在源代码之间安装了一个来自python 2.7的WSGI版本,这就是代码最终运行的原因。 –

+0

我从我的问题中删除了WSGI版本行,因为它不正确。 –

+0

您仍然不需要将“dist-packages”和“site-packages”自己添加到Python模块搜索路径中。如果你这样做,仍然有可能出错。除'/ usr/local''之外,你还在'/ usr'下安装了Python 2.7系统吗? –

相关问题