Tôi gặp sự cố khi chạy tập lệnh web.py
trong mod_wsgi
. Script sử dụng numpy và opencv.NhậpError: numpy.core.multiarray không nhập được khi đang sử dụng mod_wsgi
Dưới đây là chi tiết về sự cố của tôi.
Tôi có hai phiên bản python trên hộp nhưng tôi muốn tập lệnh chạy với python2.7. Vì vậy, từ người phiên dịch tôi đã chắc chắn rằng tôi có thể nhập cv và 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'
tôi tải mod_wsgi từ nguồn và cấu hình và cài đặt nó bằng lệnh dưới đây:
./configure --with-python=/usr/local/bin/python2.7 --with-apxs=/usr/sbin/apxs
LD_RUN_PATH=/usr/local/lib/ make
sudo make install
Đảm bảo mod_wsgi được cấu hình đúng.
$ 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)
Ngoài ra, tôi đã điều sau đây trong httpd.conf
WSGIPythonHome /usr/local
WSGIPythonPath /usr/local/lib/python2.7/site-packages/
thư mục gói trang web của tôi chứa các tập tin sau đây:
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
Đây là kịch bản:
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()
Khi tôi truy cập vào các tập lệnh từ trình duyệt tôi thấy các lỗi dưới đây trong error_log
[error] ImportError: numpy.core.multiarray failed to import
thông báo rằng điều này xảy ra trên import cv2
dòng. Nếu tôi cũng nhận xét điều đó, giống như import numpy as np
thì tập lệnh của tôi hoạt động tốt.
tôi đã chắc chắn rằng tôi có các tập tin sau đây:
$ 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
My tập tin python2.7 cấu hình cho thấy:
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
Câu hỏi
Những gì tôi có thể làm gì để giải quyết vấn đề này?
bạn có tìm thấy giải pháp cho prob này không? – samkhan13
Đã xảy ra lỗi nếu bạn chỉ nhập gọn gàng trong tập lệnh wsgi của mình? Nếu nó không xảy ra cố gắng để nhập khẩu nhập trước khi nhập khẩu cv2, có thể giúp đỡ. – Aldarund