0

UPDATE:

I came across this post: Python mysqldb on Mac OSX 10.6 not working saw two options:

  1. Add MySQL client libraries to the LD_LIBRARY_PATH

    mysql_config --libs -L/usr/local/mysql/lib -lmysqlclient -lpthread

So I don't need to do anything here.

  1. just going to upgrade to Python 2.7 and then re-install mysqldb.

ISSUE:

Successfully installing django and and running virtualenvs environment and creating a project with sqlite3. I wanted to use mysql to manage the database instead.

settings.py

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
         'NAME': 'blog',                      # Or path to database file if using sqlite3.
         'USER': 'root',                      # Not used with sqlite3.
         'PASSWORD': 'root',                  # Not used with sqlite3.
         'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
         'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
     } }

This has stomped me: after performing:

sudo python manage.py runserver

Error I get is:

 Traceback (most recent call last):
  File "manage.py", line 14, in <module>
    execute_manager(settings)
  File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
    utility.execute()
  File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 209, in execute
    translation.activate('en-us')
  File "/Library/Python/2.6/site-packages/django/utils/translation/__init__.py", line 100, in activate
    return _trans.activate(language)
  File "/Library/Python/2.6/site-packages/django/utils/translation/trans_real.py", line 202, in activate
    _active.value = translation(language)
  File "/Library/Python/2.6/site-packages/django/utils/translation/trans_real.py", line 185, in translation
    default_translation = _fetch(settings.LANGUAGE_CODE)
  File "/Library/Python/2.6/site-packages/django/utils/translation/trans_real.py", line 162, in _fetch
    app = import_module(appname)
  File "/Library/Python/2.6/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Users/james/Projects/current/code/blog/jamesapps/../jamesapps/tagging/__init__.py", line 3, in <module>
    from tagging.managers import ModelTaggedItemManager, TagDescriptor
  File "/Users/james/Projects/current/code/blog/jamesapps/../jamesapps/apps/tagging/__init__.py", line 3, in <module>
    from tagging.managers import ModelTaggedItemManager, TagDescriptor
  File "/Users/james/Projects/current/code/blog/blog/django-tagging/tagging/managers.py", line 5, in <module>
  File "/Library/Python/2.6/site-packages/django/contrib/contenttypes/models.py", line 1, in <module>
    from django.db import models
  File "/Library/Python/2.6/site-packages/django/db/__init__.py", line 78, in <module>
    connection = connections[DEFAULT_DB_ALIAS]
  File "/Library/Python/2.6/site-packages/django/db/utils.py", line 93, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/Library/Python/2.6/site-packages/django/db/utils.py", line 33, in load_backend
    return import_module('.base', backend_name)
  File "/Library/Python/2.6/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Python/2.6/site-packages/django/db/backends/mysql/base.py", line 14, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Library/Python/2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg/_mysql.so
  Reason: image not found

My setup is:

Mac OS X 10.6.8 2x2Ghz Dual-Core Intel Xeon
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386):    Mach-O executable i386
/usr/bin/python (for architecture ppc7400): Mach-O executable ppc

~/.bash_profile contains

export PATH=/usr/local/mysql/bin:$PATH
export EDITOR="$HOME/bin/mate -w"
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

If I do

python shell
import MySQLdb

This displays nothing.

I have read the following posts and pages including many more:

 <https://stackoverflow.com/questions/7335853/mysql-python-installation-problems-on-mac-os-x-lion>
<https://stackoverflow.com/questions/1299013/problem-using-mysqldb-symbol-not-found-mysql-affected-rows>
<http://friendlybit.com/tutorial/install-mysql-python-on-mac-os-x-leopard/>

I have uninstalled mysql using the following and then reinstalled from .dmg:

•   Stop the database server
•   sudo rm /usr/local/mysql
•   sudo rm -rf /usr/local/mysql*
•   sudo rm -rf /Library/StartupItems/MySQLCOM
•   sudo rm -rf /Library/PreferencePanes/My*
•   edit /etc/hostconfig and remove the line MYSQLCOM=-YES-
•   rm -rf ~/Library/PreferencePanes/My*
•   sudo rm -rf /Library/Receipts/mysql*
•   sudo rm -rf /Library/Receipts/MySQL*
•   sudo rm -rf /private/var/db/receipts/*mysql*

Uninstalled mysql-python using pip and then recompiled from source:

sudo ARCHFLAGS='-arch x86_64' python setup.py build
sudo ARCHFLAGS='-arch x86_64' python setup.py install

Where am I going wrong, is it because the mysql clients are incorrectly configured for this version of Mysql-python?

2 Answers 2

8

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

Sign up to request clarification or add additional context in comments.

Comments

0

I usually install MySQL using Homebrew on my Mac (which is a very painless process) and the "image not found" is something I remember seeing right after upgrading the version of MySQL without reinstalling MySQL-python.

My recommendation is to uninstall MySQL and MySQL-python, install Homebrew and then run:

brew install mysql
pip install MySQL-python

1 Comment

Thank you for your reply but I actually found the solution to my issue. After making sense of the error message I just needed to create a symbolic to the libmysqlclient.18.dylib file like so: sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.