У меня возникли проблемы с запуском скрипта web.py
в mod_wsgi
. Сценарий использует numpy и opencv.ImportError: numpy.core.multiarray не удалось импортировать при использовании mod_wsgi
Вот подробности моей проблемы.
У меня две версии python на поле, но я хочу, чтобы скрипт работал с python2.7. Таким образом, с переводчиком, я гарантировал, что я могу импортировать резюме и 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'
Я скачал mod_wsgi из источника и сконфигурировано и установил его с ниже командой:
./configure --with-python=/usr/local/bin/python2.7 --with-apxs=/usr/sbin/apxs
LD_RUN_PATH=/usr/local/lib/ make
sudo make install
Обеспечение того, чтобы mod_wsgi сконфигурировано должным образом.
$ 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)
Кроме того, я следующий в моем httpd.conf
WSGIPythonHome /usr/local
WSGIPythonPath /usr/local/lib/python2.7/site-packages/
директории пакетов Сайт содержит следующие файлы:
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
Вот сценарий:
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()
Когда я получить доступ скрипт из браузера я вижу ошибку ниже в error_log
[error] ImportError: numpy.core.multiarray failed to import
уведомления, что это происходит на import cv2
линии. Если я тоже это прокомментирую, как и import numpy as np
, тогда мой скрипт отлично работает.
Я гарантировал, что у меня есть следующие файлы:
$ 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
Мой файл python2.7 конфигурации показывает:
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
Вопрос
Что я могу сделать, чтобы решить Эта проблема?
Вы нашли решение для этой проблемы? – samkhan13
Произошла ли ошибка, если вы импортировали только свой номер в свой скрипт wsgi? Если это не произойдет, попробуйте поставить import numpy перед импортом cv2, что могло бы помочь. – Aldarund