9

web.pyでスクリプトを実行できませんmod_wsgi。スクリプトは numpy と opencv を使用します。

これが私の問題の詳細です。

ボックスには 2 つの Python バージョンがありますが、スクリプトを python2.7 で実行したいと考えています。したがって、インタープリターから、cvと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

質問

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

でインストールnumpypip install numpyます。すべてのパッケージを作成virtualenvしてインストールしましたが、エラーはありません。古い NumPy に問題がある可能性があります。バージョンは1.8.1です。Apache 仮想ホスト内の私の変数は次のとおりです。

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 ベースの Linux 専用であるため、パスは必要ないと思います。

問題が実際に OpenCV にあると思われる場合は、コマンドlocate cv2.soを使用すると、OpenCV 共有モジュールが存在するパスを取得し、そのディレクトリは にある必要がありますWSGIPythonPath

于 2014-03-26T03:25:46.040 に答える