2017-07-13 6 views
1

フラスコを実行するpythonスクリプトでgdalを使用しています(apache + mod_wsgi上)。サーバーを起動するとき、私はこのエラーを取得:フラスコで動作していないgdal(Apache上+ mod_wsgi上)

ImportError: /usr/bin/anaconda/lib/python2.7/site-packages/osgeo/../../.././libcurl.so.4: undefined symbol: SSLv2_client_method

でGDALをインポートするときにエラーが発生:

from osgeo import gdal 

事があり、そのコンソールからそのコマンド(インポートGDAL)を実行している場合同じPythonインタプリタですが、うまくいきます...しかし、WSGIデーモンと同じスクリプトを実行しても動作しません。次のように

私のWSGIファイルは次のとおりです。

<VirtualHost *:80> 
    ServerName ____________ 

    WSGIDaemonProcess aurapi user=avt group=avt threads=5 python-path=/usr/bin/anaconda/lib/python2.7/site-packages python-home=/usr/bin/anaconda/bin 
    WSGIScriptAlias//var/api/aurapi/aurapi.wsgi 

    <Directory /var/api/aurapi> 
      WSGIProcessGroup aurapi 
      WSGIApplicationGroup %{GLOBAL} 
      WSGIScriptReloading On 
      Require all granted 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

これが唯一のGDALで発生し、他のすべてのライブラリが素晴らしい仕事します。

ありがとうございます!

答えて

1

なぜなら、Anaconda Pythonを使用しており、Apacheでmod_sslモジュールを有効にしているからです。

Anaconda PythonはシステムOpenSSLライブラリを無視し、独自のライブラリをバンドルするため、問題が発生します。 Apacheにロードされたmod_sslモジュールはシステムのOpenSSLライブラリを使用するため、最初にロードされます。 Pythonの何かがAnaconda PythonのSSLモジュールを使用しようとすると、OSはそのシステムのOpenSSLライブラリが既に(mod_sslを介して)ロードされているとみなし、Anaconda OpenSSLライブラリは使用されません。 Anaconda PythonのOpenSSLライブラリは異なるバージョンであるか、または他の方法では互換性がないため、PythonモジュールがOpenSSLライブラリのAnacondaバージョンを期待してコンパイルされるため、あらゆる種類の奇妙な問題が発生します。

つまり、Anaconda PythonによるOpenSSLのバンドル、MacOS XのPSFからのPython 3.6のバンドルは、mod_wsgiのいずれかを使用するとApacheでmod_sslを使用できないことを意味します。そうしないと問題が発生します。

+0

お返事ありがとうございます!これは、mod_sslを無効にするため、このアプリケーションでhttpsを使用できないことを意味します。それは本当に悪いトレードオフです! – luckyshonway

+0

それはAnacondaが引き起こした問題です。 Anaconda Pythonが本当に必要ない場合は、システムのPythonパッケージを使用してください。 –

+0

アナコンダを捨ててディストリビューションのpythonに切り替えて、うまくいきました...助けてくれてありがとう!ミニコンダが同じことをしてもそれを試す時間がなかったのは興味深いことでした。 – luckyshonway

関連する問題