2011-11-18 41 views
0

我想在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

回答