我正试图在OSX10.7 (lion)上运行django,并使用apache mod_wsgi和virtualenv。如果我使用django测试服务器,我的站点就能工作:
(基线)水獭:hello$ python manage.py runserver
但是当我运行apache时,它不起作用。这个错误的核心似乎是
未加载
库: libmysqlclient.16.dylib
我认为这与apache用来定位libmysqlclient.16.dylib的路径有关。
当我在lib目录中运行otool时,它看起来很好。
otter:lib $ pwd /usr/local/mysql/lib otter:lib $otoollibmysqlclient.16.dylib: libmysqlclient.16.dylib (兼容性版本16.0.0,当前版本16.0.0) /usr/lib/libSystem.B.dylib (兼容性版本1.0.0,当前版本125.0.1)
但从外面看却找不到
otter:lib $ cd / otter:/ / mathew$ otoollibmysqlclient.16.dylib:无法打开文件: libmysqlclient.16.dylib (没有这样的文件或目录)
如果我手动设置DYLD_LIBRARY_PATH工具工作
otter:lib mathew$ DYLD_LIBRARY_PATH=/usr/local/mysql/lib otter:LIBRARY$otoollibmysqlclient.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设置了虚拟服务器和mysql动态库的路径。
DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH导出
路径
当我运行apache时,它会找到我的虚拟路径,但它似乎找不到动态库路径。
我尝试将此路径添加到/usr/sbin/envvars
DYLD_LIBRARY_PATH="/usr/lib:/usr/local/mysql/lib:$DYLD_LIBRARY_PATH“
DYLD_LIBRARY_PATH
和/private/etc/paths.d s.d/libmysql
/usr/local/mysql/lib
然后重新启动机器,但这并没有更改错误消息。
加载dlopen(/usr/local/python_virtualenv/baseline/lib/python2.7/site-packages/_mysql.so,模块的
错误
2):未加载的库: libmysqlclient.16.dylib
我不认为这是一个权限问题:
-rwxr-xr-x1根轮3787328 2010年12月4日16 admin drwxr-xr-x39根轮1394 18 11月21:07 / drwxr-xr-x@ 15根轮510 24 10月22日:10 /usr drwxrwxr-x20根管理680 2 11月20日:22/usr/本地drwxr-x20 mathew管理680 9 11月21日:58/usr/python/python_virtualenv drwxr-xr-x6 mathew 204 21:36 /usr/local/python_virtualenv/基线drwxr-x4 mathew admin 136 11月2日21:26 /usr/python_virtualenv/基线/lib drwxr-xr-x52 mathew admin 1768 2 11月21日:26 /usr/local/python_virtualenv/baseline/lib/python2.7 drwxr-xr-x18 mathew admin 612 4 /usr/local/python_virtualenv/baseline/lib/python2.7/site-packages 21:20 /usr/local/python_virtualenv/baseline/lib/python2.7/site-packages-rwxr-x1 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位:
otter:lib mathew$ file /usr/sbin/httpd /usr/sbin/httpd: Mach-O通用二进制文件,包含2种体系结构/usr/sbin/httpd (用于体系结构x86_64):Mach-O位可执行x86_64 /usr /usr/sbin/httpd (用于体系结构i386):Mach-O可执行i386 otter:lib mathew$
水獭: library $ file /usr/local/mysql/lib/libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib: Mach-O 64位动态链接共享库x86_64
更新:这不是一个真正的解决方案,但我使用以下方法解决了错误:
18 mysql/usr/
/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和google group mod_wsgi邮件列表页面:http://groups.google.com/group/modwsgi/browse_thread/thread/6517dc90be9d43ff上找到解释。
发布于 2011-11-19 00:29:41
在mod_wsgi邮件列表中也提出了以下问题:
http://groups.google.com/group/modwsgi/browse_thread/thread/6517dc90be9d43ff
当我有机会坐下来关注它的时候,我会在邮件列表上回答它。
https://stackoverflow.com/questions/8182305
复制相似问题