The setup...

Trying to setup a clean Mac os X 10.6 install to build up python/django and that i did not remember running into this on 10.5.

After setting up MySQL in the installer on mysql-5.5.8-osx10.6-x86_64.dmg I went

$ sudo pip install MySQL-python

also it appeared to visit easily (output below)

Installing/unpacking MySQL-python

  Installing MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded

  Running setup.py egg_info for package MySQL-python

    warning: no files found matching 'MANIFEST'

    warning: no files found matching 'ChangeLog'

    warning: no files found matching 'GPL'

Setting up collected packages: MySQL-python

  Running setup.py install for MySQL-python

    building '_mysql' extension

    gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -pipe -Dversion_info=(1,2,3,'final',) -D__version__=1.2.3 -I/usr/local/mysql/include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c _mysql.c -o build/temp.macosx-10.6-universal-2.6/_mysql.o -Os -g -fno-common -fno-strict-aliasing -arch x86_64

    In file incorporated from _mysql.c:36:

    /usr/local/mysql/include/my_config.h:325:1: warning: "SIZEOF_SIZE_T" changed

    In file incorporated from /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h:9,

                     from pymemcompat.h:10,

                     from _mysql.c:29:

    /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pymacconfig.h:33:1: warning: this really is the position of the previous definition

    In file incorporated from _mysql.c:36:

    /usr/local/mysql/include/my_config.h:419:1: warning: "HAVE_WCSCOLL" changed

    In file incorporated from /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h:8,

                     from pymemcompat.h:10,

                     from _mysql.c:29:

    /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pyconfig.h:803:1: warning: this really is the position of the previous definition

    gcc-4.2 -Wl,-F. -bundle -undefined dynamic_research build/temp.macosx-10.6-universal-2.6/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lpthread -o build/lib.macosx-10.6-universal-2.6/_mysql.so -arch x86_64

    warning: no files found matching 'MANIFEST'

    warning: no files found matching 'ChangeLog'

    warning: no files found matching 'GPL'

Effectively installed MySQL-python

Cleaning...

following this I attempted:

$ python -c "import MySQLdb"

also it crapped on me with:

Traceback (newest call last):

  File "<string>", line 1, in <module>

  File "/Library/Python/2.6/site-packages/MySQLdb/__init__.py", line 19, in <module>

    import _mysql

ImportError: dlopen(/Library/Python/2.6/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.16.dylib

  Recommended from: /Library/Python/2.6/site-packages/_mysql.so

  Reason: image not found

So onto my question...

What did I actually do wrong?/What else should i do?

Searching (and looking out here) with this returns lots of results getting this error message with Ruby very few with Python tho.

Just set the DYLD_LIBRARY_PATH after running pip install or easy_install:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

Should get the job done presuming your MySQL installation lives under /usr/local/mysql.

_mysql.so describes libmysqlclient.16.dylib. That's, the shared library that can serve as the bridge between Python and also the MySQL client library, _mysql.so, refers back to the dynamic library for that MySQL client library, which library can't be loaded for whatever reason.

Questions you have to answer:

  • It is possible to libmysqlclient.16.dylib anywhere in your system? Otherwise, you have to install the MySQL client software.
  • If that's the case, may be the directory that contains that library inside your DYLD_LIBRARY_PATH setting? Otherwise, try adding it.
  • If that's the case, you will need to be sure that the libmysqlclient.16.dylib file isn't corrupt. My copy, set up in /opt/local/lib/mysql5/mysql/libmysqlclient.16.dylib, thanks to MacPorts, has MD5 signature c79ee91af08057dfc269ee212915801a and it is 1,462,376 bytes in dimensions. Exactly what does your copy seem like?