2016-08-16 122 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系統嗎? –

相關問題