Что мне нужно сделать, чтобы mod_wsgi нашел libmysqlclient.16.dylib?(OSX 10.7 с apache mod_wsgi) - PullRequest
0 голосов
/ 18 ноября 2011

Я пытаюсь запустить django на osx 10.7 (лев) с apache mod_wsgi и virtualenv. Мой сайт работает, если я использую сервер тестирования django:

(baseline)otter:hello mathew$ python manage.py runserver

но это не работает, когда я запускаю apache. Ядро ошибки, похоже,

Library not loaded: libmysqlclient.16.dylib

Я думаю, что это связано с путем, который Apache использует для поиска libmysqlclient.16.dylib

когда я запускаю otool в каталоге lib, он выглядит хорошо

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 mathew $ DYLD_LIBRARY_PATH = / usr / local / 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 /
drwxr-xr-x@ 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 mathew $ file / usr / sbin / httpd / usr / sbin / httpd: Mach-O универсальный двоичный файл с 2 архитектурами / usr / sbin / httpd (для архитектура x86_64): 64-разрядный исполняемый файл Mach-O x86_64 / usr / sbin / httpd (для архитектуры i386): исполняемый файл Mach-O i386 выдра: lib mathew $

выдра: lib mathew $ file /usr/local/mysql/lib/libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib: 64-разрядная версия Mach-O динамически связанная общая библиотека 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 групп google: http://groups.google.com/group/modwsgi/browse_thread/thread/6517dc90be9d43ff

1 Ответ

1 голос
/ 19 ноября 2011

Вопрос также задавался в списке рассылки mod_wsgi по адресу:

http://groups.google.com/group/modwsgi/browse_thread/thread/6517dc90be9d43ff

Я отвечу на него в списке рассылки, когда у меня будет возможность сесть и сосредоточиться на нем.

...