ImportError: numpy.de base.multiarray échec de l'importation lors de l'utilisation mod_wsgi

Je vais avoir des difficultés à exécuter un web.py script dans mod_wsgi. Le Script utilise numpy et opencv.

Voici les détails de mon problème.

J'ai deux versions de python sur la boîte, mais je veux que le script à exécuter avec python2.7. Donc, à partir de l'interprète, j'ai veillé à ce que je peux importer cv et 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'

J'ai téléchargé mod_wsgi à partir de la source et configuré et installé avec la commande ci-dessous:

./configure --with-python=/usr/local/bin/python2.7 --with-apxs=/usr/sbin/apxs
LD_RUN_PATH=/usr/local/lib/ make 
sudo make install

Veiller à ce que mod_wsgi est configuré correctement.

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

En outre, j'ai la suite dans ma httpd.conf

WSGIPythonHome /usr/local
WSGIPythonPath /usr/local/lib/python2.7/site-packages/

le site des paquets répertoire contient les fichiers suivants:

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

Voici le 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()

Lorsque je visite le script de navigateur, je vois l'erreur ci-dessous dans error_log

[error] ImportError: numpy.core.multiarray failed to import

avis que ce qui se passe sur import cv2 ligne. Si j'ai fait un commentaire qui, comme import numpy as np alors mon script fonctionne très bien.

J'ai veillé à ce que j'ai les fichiers suivants:

$ 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

Mon python2.7 fichier de config montre:

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

Question

Que puis-je faire pour résoudre ce problème?

avez-vous trouvé une solution pour ce problème?
Fait l'erreur se produit si vous importez uniquement numpy dans votre wsgi script? Si elle ne marche pas se produire essayer de mettre import numpy avant l'importation cv2, qui pourrait les aider.

OriginalL'auteur Anthony | 2013-10-10