mod_wsgi не может загрузить MySQL - PullRequest
0 голосов
/ 14 марта 2011

Сначала я перечислю свою среду и статус:

Среда:

  • Система: Mac OS 10.6
  • Python: 2.6
  • Apache: 2.2
  • mod_wsgi: 3.3
  • mysql: 5.x
  • php: 3.5
  • trac: 0,12

Статус: Я могу запустить trac как один-сервер без проблем.Теперь я интегрирую trac в apache, проблема выходит.mod_wsgi может корректно запускать обычную страницу wsgi, но не может загрузить соединение mysql.Я тестирую его в куске кода, помещаю « import MySQLdb » на страницу wsgi, но все равно не могу.Я также могу получить доступ к trac через apache, но он показывает мне Невозможно загрузить привязки Python для MySQL

Я ссылаюсь на журнал apache:

[Sun Mar 13 13:36:44 2011] [error] [client ::1] mod_wsgi (pid=37060): Target WSGI script /Users/alex/Library/apache2/htdocs/sql.wsgi' cannot be loaded as Python module.

[Sun Mar 13 13:36:44 2011] [error] [client ::1] mod_wsgi (pid=37060): Exception occurred processing WSGI script '/Users/alex/Library/apache2/htdocs/sql.wsgi'.

[Sun Mar 13 13:36:44 2011] [error] [client ::1] Traceback (most recent call last):

[Sun Mar 13 13:36:44 2011] [error] [client ::1]   File "/Users/alex/Library/apache2/htdocs/sql.wsgi", line 2, in <module>

[Sun Mar 13 13:36:44 2011] [error] [client ::1]     import MySQLdb

[Sun Mar 13 13:36:44 2011] [error] [client ::1]   File "build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py", line 19, in <module>

[Sun Mar 13 13:36:44 2011] [error] [client ::1]   File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 7, in <module>

[Sun Mar 13 13:36:44 2011] [error] [client ::1]   File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 6, in __bootstrap__

[Sun Mar 13 13:36:44 2011] [error] [client ::1] ImportError: dlopen(/Users/alex/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.16.dylib

[Sun Mar 13 13:36:44 2011] [error] [client ::1]   Referenced from: /Users/alex/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so

[Sun Mar 13 13:36:44 2011] [error] [client ::1]   Reason: image not found

[Sun Mar 13 13:36:57 2011] [error] [client ::1] mod_wsgi (pid=37061): Target WSGI script

Это похоже на mod_wsgiне могу найти libmysqlclient.16.dylib.Я сталкиваюсь с подобной проблемой при установке mysqldb для python, поэтому я добавляю export

DYLD_LIBRARY_PATH=/Users/alex/Library/mysql-5.x/lib

SO python -c "import MySQLdb" может работать, но mod_wsgi не может работать.Поэтому я поместил

os.environ['DYLD_LIBRARY_PATH'] = '/Users/alex/Library/mysql-5.x/lib'

в trac.ini.Это не работает для трака в Apache до сих пор.

Так у кого-нибудь была эта проблема раньше?Спасибо

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

Проблема в том, что ваш Apache работает как 64-битная, и вы используете 32-битную версию MySQL, или Apache работает как 32-битную, и вы используете 64-битную версию MySQL.

Запустите 'file 'command on' libmysqlclient.16.dylib ', и он скажет вам, для каких архитектур он построен.См. Аналогичные проблемы для фактического расширения Python по адресу:

http://code.google.com/p/modwsgi/wiki/InstallationOnMacOSX#Missing_Code_For_Architecture

Вам необходимо получить доступ к далекому двоичному файлу библиотеки MySQL или заставить Apache работать с той же архитектурой.Связанная документация содержит некоторые рекомендации относительно того, что можно сделать.

0 голосов
/ 14 марта 2011

Попробуйте LD_LIBRARY_PATH вместо:

export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql:$LD_LIBRARY_PATH
...