我想在apache mod_wsgi和virtualenv的osx 10.7(獅子)上運行django。 我的網站工作,如果我使用Django的測試服務器:我需要做什麼才能讓mod_wsgi找到libmysqlclient.16.dylib? (osx 10.7與apache mod_wsgi)
(baseline)otter:hello mathew$ python manage.py runserver
但是當我運行Apache這是行不通的。錯誤的核心似乎是
Library not loaded: libmysqlclient.16.dylib
我認爲它做的路徑Apache是利用定位libmysqlclient.16.dylib
當我在lib目錄下運行otool它看起來不錯
otter:lib mathew$ pwd /usr/local/mysql/lib otter:lib mathew$ otool -L libmysqlclient.16.dylib libmysqlclient.16.dylib: libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.1)
但是從外面無法找到它
otter:lib mathew$ cd/ otter:/ mathew$ otool -L libmysqlclient.16.dylib otool: can't open file: libmysqlclient.16.dylib (No such file or directory)
如果我手動設置DYLD_LIBRARY_PATH otool工作
水獺:LIB馬修$ DYLD_LIBRARY_PATH =的/ usr /本地/ MySQL的/ lib目錄水獺:LIB 馬修$ otool -L的libmysqlclient。 16.dylib libmysqlclient.16.dylib: libmysqlclient.16.dylib(兼容版本16.0.0,當前 版本16.0.0)/usr/lib/libSystem.B.dylib(兼容版本 1.0.0,當前版本125.0 .1)
當我運行Django的測試服務器,我的.bash_profile中樹立的virtualenv和路徑到mysql動態庫
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH export PATH
當我運行Apache找到我的virtualenv的路徑,但它似乎沒有找到動態庫路徑。
我嘗試添加此路徑/ usr/sbin目錄/ envvars中
DYLD_LIBRARY_PATH="/usr/lib:/usr/local/mysql/lib:$DYLD_LIBRARY_PATH" export DYLD_LIBRARY_PATH
並/private/etc/paths.d/libmysql
/usr/local/mysql/lib
然後重新啓動機器 但這並沒有改變錯誤信息。未加載 庫::
Error loading MySQLdb module: dlopen(/usr/local/python_virtualenv/baseline/lib/python2.7/site-packages/_mysql.so,
2)libmysqlclient.16。dylib
我不認爲這是一個權限問題:
-rwxr-xr-x 1 root wheel 3787328 4 Dec 2010 libmysqlclient.16.dylib drwxr-xr-x 39 root wheel 1394 18 Nov 21:07/ [email protected] 15 root wheel 510 24 Oct 22:10 /usr drwxrwxr-x 20 root admin 680 2 Nov 20:22 /usr/local drwxr-xr-x 20 mathew admin 680 9 Nov 21:58 /usr/local/python_virtualenv drwxr-xr-x 6 mathew admin 204 2 Nov 21:36 /usr/local/python_virtualenv/baseline drwxr-xr-x 4 mathew admin 136 2 Nov 21:26 /usr/local/python_virtualenv/baseline/lib drwxr-xr-x 52 mathew admin 1768 2 Nov 21:26 /usr/local/python_virtualenv/baseline/lib/python2.7 drwxr-xr-x 18 mathew admin 612 4 Nov 21:20 /usr/local/python_virtualenv/baseline/lib/python2.7/site-packages -rwxr-xr-x 1 mathew admin 66076 2 Nov 21:18 /usr/local/python_virtualenv/baseline/lib/python2.7/site-packages/_mysql.so
什麼我需要做的,這樣的mod_wsgi會發現libmysqlclient.16.dylib?
Apache和MySQL均爲64位:
水獺:LIB馬修$文件/ usr/sbin目錄/ httpd的/ usr/sbin目錄/ httpd的:Mach-O的 通用二進制用2架構的/ usr/sbin目錄/ httpd的(對於 架構x86_64的):Mach-O的64位可執行x86_64的/ usr/sbin目錄/ httpd的 (對於架構I386):Mach-O的可執行I386水獺:LIB馬修$
水獺:LIB馬修$文件/usr/local/mysql/lib/libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib:Mach-O 64位 動態鏈接共享庫x86_64的
更新:它不是一個真正的解決辦法,但我一直在使用周圍的錯誤了:
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/python_virtualenv/baseline/lib/python2.7/site-packages/_mysql.so
你可以找到一個解釋: http://qin.laya.com/tech_coding_help/dylib_linking.html和谷歌羣組mod_wsgi郵件列表頁面:http://groups.google.com/group/modwsgi/browse_thread/thread/6517dc90be9d43ff