2013-10-10 33 views
9

का उपयोग करते समय आयात करने में विफल रहा है मुझे स्क्रिप्ट mod_wsgi में चलाने में समस्या हो रही है। स्क्रिप्ट numpy और opencv का उपयोग करता है।आयात त्रुटि: numpy.core.multiarray mod_wsgi

यहां मेरी समस्या का विवरण दिया गया है।

मेरे पास बॉक्स पर दो पायथन संस्करण हैं लेकिन मैं स्क्रिप्ट को 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 सुनिश्चित करना कॉन्फ़िगर किया गया है अच्छी तरह।

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() 
:

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 

यहाँ स्क्रिप्ट है:

$ 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/ 

साइट संकुल निर्देशिका में निम्नलिखित है निम्न फ़ाइलें हैं

जब मैं ब्राउज़र से स्क्रिप्ट का उपयोग मैं में 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 

प्रश्न

क्या मैं हल कर सकते हैं इस मुद्दे? विंडोज़ के लिए

+0

क्या आपको इस प्रोब के लिए समाधान मिला? – samkhan13

+1

क्या त्रुटि तब होती है जब आप अपनी wsgi स्क्रिप्ट में केवल numpy आयात करते हैं? यदि ऐसा नहीं होता है तो आयात cv2 से पहले आयात numpy डालने का प्रयास करें, जो मदद कर सकता है। – Aldarund

उत्तर

3

! आप डाउनलोड करने और NumPy 1.6.1 और 0.9.0 SciPy स्थापित करने की आवश्यकता

+1

क्या आप कह रहे हैं कि मुझे 'mod_wsgi' पर काम करने के लिए उन विशिष्ट संस्करणों की आवश्यकता है? – Anthony

+0

बेकार लेकिन अभी भी सच लगता है। – Michael

1

pip install numpy साथ numpy स्थापित करें (आप जो अजगर 2.7 भी समर्थन फ़ाइलों का चयन करने की जरूरत है)। मैंने virtualenv बनाया और सभी संकुल स्थापित किए और कोई त्रुटि नहीं है। पुराने NumPy के साथ समस्या हो सकती है, मेरे पास संस्करण 1.8.1 है। अपाचे आभासी मेजबान के अंदर मेरे चर हैं:

WSGIPythonHome /path/to/webpy_virtualenv/local 
WSGIPythonPath /path/to/virtualenv/lib/python2.7/site-packages/:/usr/local/lib/python2.7/site-packages/:/usr/local/lib/python2.7/dist-packages/ 

मुझे लगता है कि आप /usr/local/lib/python2.7/dist-packages/ पथ की जरूरत नहीं है क्योंकि कि Debian आधारित Linuces के लिए ही है।

यदि आपको संदेह है कि समस्या वास्तव में ओपनसीवी के साथ है, तो कमांड locate cv2.so के साथ आपको पथ मिलेगा जहां ओपनसीवी साझा मॉड्यूल रहता है और यह निर्देशिका WSGIPythonPath में होनी चाहिए।

संबंधित मुद्दे