Ho problemi durante l'esecuzione di uno script web.py
in mod_wsgi
. Lo script usa numpy e opencv.ImportError: numpy.core.multiarray non è riuscito a eseguire l'importazione durante l'utilizzo di mod_wsgi
Ecco i dettagli del mio problema.
Ho due versioni python sulla scatola ma voglio che lo script sia eseguito con python2.7. Così dall'interprete che ho assicurato che posso importare cv e NumPy
$ python
Python 2.7.3 (default, Oct 8 2013, 15:53:09)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> import numpy
>>> import sys
>>> sys.prefix
'/usr/local'
ho scaricato mod_wsgi dalla sorgente e configurato e installato con il seguente comando:
./configure --with-python=/usr/local/bin/python2.7 --with-apxs=/usr/sbin/apxs
LD_RUN_PATH=/usr/local/lib/ make
sudo make install
Garantire che mod_wsgi è configurato propriamente.
$ ldd /usr/lib64/httpd/modules/mod_wsgi.so
linux-vdso.so.1 => (0x00007fff36dff000)
libpython2.7.so.1.0 => /usr/local/lib/libpython2.7.so.1.0 (0x00007f9462710000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f94624e8000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f94622e4000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f94620e1000)
libm.so.6 => /lib64/libm.so.6 (0x00007f9461e5c000)
libc.so.6 => /lib64/libc.so.6 (0x00007f9461ac9000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9462d15000)
Inoltre, ho il seguente nel mio httpd.conf
WSGIPythonHome /usr/local
WSGIPythonPath /usr/local/lib/python2.7/site-packages/
directory packages sito contiene i seguenti file:
cv2.so
cv.py
distribute-0.6.35-py2.7.egg
easy-install.pth
numpy-1.7.1-py2.7-linux-x86_64.egg
README
setuptools-0.6c11-py2.7.egg-info
setuptools.pth
web.py-0.37-py2.7.egg
Ecco lo script:
import web
import json
import cv2
#import numpy as np
urls = (
'.*', 'Sample'
)
class Sample:
def GET(self):
user_data = web.input()
return json.dumps(self.perform(user_data.color, user_data.shade))
def perform (self,color, shade):
return {'color': color, 'shade': shade}
application = web.application(urls, globals()).wsgifunc()
Quando accedo lo script dal browser vedo l'errore sotto in error_log
[error] ImportError: numpy.core.multiarray failed to import
avviso che questo accade su import cv2
linea. Se commento così, proprio come import numpy as np
allora il mio script funziona bene.
ho assicurato che ho i seguenti file:
$ sudo find/-name libpython2.7.a
/usr/local/lib/python2.7/config/libpython2.7.a
/usr/local/lib/libpython2.7.a
$ sudo find/-name libpython2.7.so*
/usr/local/lib/libpython2.7.so
/usr/local/lib/libpython2.7.so.1.0
/usr/lib/libpython2.7.so
/usr/lib/libpython2.7.so.1.0
Il mio file di configurazione python2.7 mostra:
config.c
config.c.in
install-sh
libpython2.7.a
libpython2.7.so -> ../../libpython2.7.so
libpython2.7.so.1.0 -> ../../libpython2.7.so.1.0
Makefile
makesetup
python.o
Setup
Setup.config
Setup.local
Domanda
Che cosa posso fare per risolvere questa edizione?
hai trovato una soluzione per questo problema? – samkhan13
L'errore si è verificato se si importa solo numpy nello script wsgi? Se non si verifica, provare a importare numpy prima di importare cv2, che potrebbe essere di aiuto. – Aldarund