2012-02-16 12 views
0

OSX LionでMySQLdbを使用しているPythonスクリプトがあります。 MySQLdbを動作させるには、〜/ .bash_profileにPATH変数をApacheに提供するには? (OSX Lion)

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH 

を追加する必要がありました。 pythonスクリプトは、コマンドラインから実行するとうまくいきます。

exec()関数を使用してPHPスクリプトから同じpythonスクリプトを実行しようとすると、pythonスクリプトはライブラリパスを見つけることができません。ここでは、Apacheのログからのerr msgがあります:

ImportError: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib 
    Referenced from: /Library/Python/2.7/site-packages/_mysql.so 
    Reason: image not found 

私はこれを仮定している私はそれを修正する方法については不明だけれども、ユーザの問題です。

このパスは、マシン上のすべてのスクリプトとユーザーがグローバルに使用できるようにする必要がありますか。 (少なくとも、ApacheとRootに)

+0

さらに詳しい情報/説明:ターミナルからroot以外の通常のユーザーとしてpythonを実行すると、 "import MySQLdb"が動作します。私がsudoして同じことをしようとすると、私はエラーが発生します。したがって、問題はユーザーのスコープの1つでなければなりません。 DYLD_LIBRARY_PATHを適切な場所にエクスポートしてすべてのユーザーが利用できるようにすることで、Pythonの外部でこれを解決したいと思いますが、どこでどのように行うのかはわかりません。 – Tapefreak

+0

'/ etc/bash.bashrc' – Gandaro

答えて

1

ソリューション:それは環境変数PYTHONPATHから初期化。おそらく、この解決策はOSX上のMySQLdbとの別の苦労を助けるでしょう。

私はそれがなぜ1人のユーザで働いているのか、それともむしろどのファイルに関係しているのかについてはっきりしていませんが、すべての人が利用できるように上記のエクスポートを保存しておくべきです。これに関するすべての説明は高く評価されます。

+0

Apacheは.bash_profileを読んでいないので、環境変数を選択しません。 – duskwuff

0

sys.path配列を変更する必要があるようです。この溶液をthis post上のコメントから取られた

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

:トリックをしたソフトリンクを作成:http://docs.python.org/library/sys.html#sys.path

+0

いいえ、Pythonの外に解決策があります。私はこの同じコードを別のdevマシン(Snow Leopard)で動かしていました。私はちょうどUNIXのユーザ/権限でいくつかの助けが必要です... – Tapefreak

0

Apacheの場合、PYTHONPATHエントリを/System/Library/LaunchDaemons/org.apache.httpd.plistのEnvironmentVariablesセクションに追加すると、Apacheが実行するすべてのもので使用できるようになります。詳細については、man launchd.plistを参照してください。

rootの場合、/etc/profileにエクスポートPYTHONPATHを追加すると、すべてのshおよびbashログインシェルで使用できるようになります。詳細は、man bashを参照してください。

関連する問題