Tag: MySQLdb

MySQLdb на Mac OS получил ошибку Library not loaded: libmysqlclient.18.dylib

После установки пакета MySQLdb и обращения к ней

In [1]: import MySQLdb

получаю ошибку

ImportError: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.7-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.7-intel.egg/_mysql.so
  Reason: image not found

Лечиться это просто, через консоль создайте сылку

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Установка MySQLdb на Mac OS

После полной переустановки системы и наката новой оси 10.6.7 у меня как у Python программиста возникла задача поднять мост между Python и MySQL. Вот как раз на этом этапе встретились подводные камни в борьбе между злом и добром =) а тоесть 32bit и 64bit ядрами.
Я не буду приводить тут  длинные маты выдаваемые в консоль, а просто скажу как это вылечить и поставить MySQLdb и человечески пользоваться им.

1. Идем на официальный сайт MySQL и качаем дистриб MySQL и качаем от туда обязательно только 64bitную версию и устанавливаем. Процесс установки тут будет понятен, там инсталятор =)
2. Устанавливаем MySQLdb. Сразу подчеркну, не устанавливайте через easy_install бессмысленно, забудте этот вариант и качайте с сайта последние исходники. В консоли переходим в директорию в которую скачали пакет и выполняем поочередно:

macbook:~ akropotov$ tar xzf MySQL-python-1.2.3c1.tar.gz
macbook:~ akropotov$ cd MySQL-python-1.2.3c1
macbook:~ akropotov$ ARCHFLAGS='-arch x86_64' python setup.py build
macbook:~ akropotov$ ARCHFLAGS='-arch x86_64' python setup.py install

И на этой ноте заканчивается вся процедура установки

macbook:~ akropotov$ python
Python 2.7.1 (r271:86882M, Nov 30 2010, 10:35:34)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>>

Установка Django на VDS хостинг

Если честно как то не хорошо получается. Я уже несколько лет работаю с VDS и непосредственно на хостинг компании ispserver.com и firstvds.ru, думаю ни кому не секрет, что это одна и та же компания, дак вот и не написал не разу о том как я разворачиваю свои приложения. Вот на это нотке и стартую описание действий по боевому разворачиванию django приложения.

1. Для начала нам понадобиться Subversion для установки django.

cd /usr/ports/devel/subversion
make install clean

2. Теперь тащим и ставим django

cd /usr/local/lib/python2.6/site-packages
svn co http://code.djangoproject.com/svn/django/trunk/ django

и ставим симлинк на django-admin.py туда где система сможет найти его

cd /usr/local/bin
ln -s /usr/local/lib/python2.5/site-packages/django/django/bin/django-admin.py django-admin.py

3. Устанавливаем mysql-python драйвер для работы с базой данный MySQL

cd /usr/ports/databases/py-MySQLdb<
make install clean

отмечаем оцию

[X] MYSQLCLIENT_R Use libmysqlclient_r (thread safe)

4. Ставим mod_python (на данный момент не рекомендуется разворачивать приложение на данной связке, так как оно не поддерживается и не ведется на настоящее время)

cd /usr/ports/www/mod_python3
make install

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

cd /home/darkfraud/data/
mkdir django-apps
cd django-apps

и тут делаем симлинк на Джангу

ln -s /usr/local/lib/python2.6/site-packages/django/django django

теперь проверим работоспособность

python
>>> import django

6. Теперь нам нужно настроить конфиг апача httpd.conf

у меня он лежит тут /usr/local/etc/apache22/httpd.conf

Открываем его на редактирование и ищем в нем бокс своего проекта

<VirtualHost darkfraud.com:80>

в него нам нужно вписать такое

<Location "/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE darkfraud.settings
    PythonOption django.root /darkfraud
    PythonAutoReload On
    PythonDebug On
    PythonPath "['/home/darkfraud/data/django-apps', '/usr/local/lib/python2.6/site-packages/django'] + sys.path"
</Location>

и еще чтоб не напрягать джангу статикой

<Location "/static">
    SetHandler None
</Location>
<Location "/media">>
    SetHandler None
</Location>
Главное не забудьте сделать симлинки в веб доступной директории симлинки на static - статика сайта и media - статика админки.

Вот и все, теперь заливаем свое приложение и пере загружаемся. Сервер с приложением работает=)