Graham, i found this searching google and was wondering how you fixed this 
issue? i am having the same issue with libmysqlclient_r.so.16 and i am not 
sure what to do... any suggestions? just a fyi i cannot get root access 
from my hosting provider. 

On Monday, November 21, 2011 7:22:57 PM UTC-5, Graham Dumpleton wrote:
>
> Some details on this finally.
>
> FWIW, this may be a MySQL 5.5 issue.
>
> At least I used to do this on MySQL 5.1 and had no problems at all. I
> have though since upgraded to MySQL 5.5 and see potential for
> problems.
>
> If you try and build MySQL client lib and don't have MySQL bin
> directory in path it will fail with:
>
> $ python setup.py build
> sh: mysql_config: command not found
> Traceback (most recent call last):
>   File "setup.py", line 15, in <module>
>     metadata, options = get_config()
>   File "/Users/graham/Packages/MySQL-python-1.2.3/setup_posix.py",
> line 43, in get_config
>     libs = mysql_config("libs_r")
>   File "/Users/graham/Packages/MySQL-python-1.2.3/setup_posix.py",
> line 24, in mysql_config
>     raise EnvironmentError("%s not found" % (mysql_config.path,))
> EnvironmentError: mysql_config not found
>
> If however the MySQL bin directory is in path you would on MacOS X
> 10.6 (Snow Leopard) get:
>
> $ PATH=/usr/local/mysql/bin:$PATH python setup.py build
> running build
> running build_py
> creating build
> creating build/lib.macosx-10.6-universal-2.6
> copying _mysql_exceptions.py -> build/lib.macosx-10.6-universal-2.6
> creating build/lib.macosx-10.6-universal-2.6/MySQLdb
> copying MySQLdb/__init__.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
> copying MySQLdb/converters.py -> 
> build/lib.macosx-10.6-universal-2.6/MySQLdb
> copying MySQLdb/connections.py -> 
> build/lib.macosx-10.6-universal-2.6/MySQLdb
> copying MySQLdb/cursors.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
> copying MySQLdb/release.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
> copying MySQLdb/times.py -> build/lib.macosx-10.6-universal-2.6/MySQLdb
> creating build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
> copying MySQLdb/constants/__init__.py ->
> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
> copying MySQLdb/constants/CR.py ->
> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
> copying MySQLdb/constants/FIELD_TYPE.py ->
> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
> copying MySQLdb/constants/ER.py ->
> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
> copying MySQLdb/constants/FLAG.py ->
> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
> copying MySQLdb/constants/REFRESH.py ->
> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
> copying MySQLdb/constants/CLIENT.py ->
> build/lib.macosx-10.6-universal-2.6/MySQLdb/constants
> running build_ext
> building '_mysql' extension
> creating build/temp.macosx-10.6-universal-2.6
> 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',0) -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 included from _mysql.c:36:
> /usr/local/mysql/include/my_config.h:329:1: warning: "SIZEOF_SIZE_T" 
> redefined
> In file included 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 is the location of the previous definition
> In file included from _mysql.c:36:
> /usr/local/mysql/include/my_config.h:422:1: warning: "HAVE_WCSCOLL" 
> redefined
> In file included 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 is the location of the previous definition
> gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup
> 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
>
> Important to note here is that it links against "-lmysqlclient_r".
>
> The "_r" version is reentrant and is what should be used if running
> multithread process.
>
> Which library is linked is dependent on code defined in
> 'setup_posix.py' of the MySQL package.
>
> In that file it has:
>
> def get_config():
>     import os, sys
>     from setup_common import get_metadata_and_options, enabled,
> create_release_file
>
>     metadata, options = get_metadata_and_options()
>
>     if 'mysql_config' in options:
>         mysql_config.path = options['mysql_config']
>
>     extra_objects = []
>     static = enabled(options, 'static')
>     if enabled(options, 'embedded'):
>         libs = mysql_config("libmysqld-libs")
>         client = "mysqld"
>     elif enabled(options, 'threadsafe'):
>         libs = mysql_config("libs_r")
>         client = "mysqlclient_r"
>         if not libs:
>             libs = mysql_config("libs")
>             client = "mysqlclient"
>     else:
>         libs = mysql_config("libs")
>         client = "mysqlclient"
>
> The flags actually come from site.cfg which has by default:
>
> [options]
> # embedded: link against the embedded server library
> # threadsafe: use the threadsafe client
> # static: link against a static library (probably required for embedded)
>
> embedded = False
> threadsafe = True
> #threadsafe = False
> static = False
>
> So, by default if build package from source yourself (not using pip)
> it should find threadsafe and link against _r version of library.
>
> For MySQL 5.5 at least:
>
> $ ls -las /usr/local/mysql/lib
> total 368624
>      0 drwxr-xr-x  12 root  wheel       408 31 Oct 14:23 .
>      0 drwxr-xr-x  16 root  wheel       544 12 Oct 23:21 ..
>   7400 -rwxr-xr-x   1 root  wheel   3787624 12 Oct 23:19 
> libmysqlclient.18.dylib
>  19552 -rw-r--r--   1 root  wheel  10008760 12 Oct 23:19 libmysqlclient.a
>      8 lrwxr-xr-x   1 root  wheel        23 31 Oct 14:23
> libmysqlclient.dylib -> libmysqlclient.18.dylib
>      8 lrwxr-xr-x   1 root  wheel        20 31 Oct 14:23
> libmysqlclient_r.18.dylib -> libmysqlclient.dylib
>      8 lrwxr-xr-x   1 root  wheel        16 31 Oct 14:23
> libmysqlclient_r.a -> libmysqlclient.a
>      8 lrwxr-xr-x   1 root  wheel        20 31 Oct 14:23
> libmysqlclient_r.dylib -> libmysqlclient.dylib
> 175552 -rw-r--r--   1 root  wheel  89879064 12 Oct 23:16 libmysqld-debug.a
> 166064 -rw-r--r--   1 root  wheel  85023840 12 Oct 23:19 libmysqld.a
>     24 -rw-r--r--   1 root  wheel      8488 12 Oct 23:19 libmysqlservices.a
>      0 drwxr-xr-x  14 root  wheel       476 12 Oct 23:21 plugin
>
> Under MySQL 5.1 am pretty sure the _r library wasn't a symlink.
>
> Changing site.cfg to not say threadsafe and ensure -l option matches
> library used makes no difference.
>
> So basically this looks like an issue with how MySQL 5.5 libraries are
> built. There didn't used to be an issue with MySQL 5.1.
>
> FWIW, I now get:
>
> $ otool -L build/lib.macosx-10.6-universal-2.6/_mysql.so
> build/lib.macosx-10.6-universal-2.6/_mysql.so:
>         libmysqlclient.18.dylib (compatibility version 18.0.0, current 
> version 18.0.0)
>         /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
> version 125.2.11)
>
> Under 5.1 it used to resolve the library no problem.
>
> I will have to rebuild my MySQL Python client library properly at some
> point and will look more at the problem then.
>
> Graham
>
> On 20 November 2011 23:00, mathew davis <[email protected] <javascript:>> 
> wrote:
> > Thanks Graham,
> >
> > the current solution at least allows me to get on with other
> > development work,
> > and I'd be happy to try and help resolve this when you can.
> >
> > Mat
> >
> > On Nov 20, 6:45 am, Graham Dumpleton <[email protected]>
> > wrote:
> >> Sorry for not replying, but I have lost Internet access at home and may 
> not
> >> get it back for a few more days.
> >>
> >> Right now you are treating the symptom and not the cause.
> >>
> >> What you have may still not work reliably because the extension is only
> >> linked with single threaded version of MySQL library and not the re 
> entrant
> >> _r version.
> >>
> >> Not linking with _r version would be caused by MySQL config script not
> >> being found or not running properly when pip was run to install module.
> >>
> >> I would like to sort this out properly still when I get my Internet 
> back.
> >>
> >> Graham
> >>
> >> On Saturday, 19 November 2011, Simon Kesenci <[email protected]> 
> wrote:
> >> > I've solved this with install_name_tool:
> >>
> >> > sudo install_name_tool -change libmysqlclient.16.dylib
> >>
> >> /full/path/to/libmysqlclient.16.dylib {file which can't load dylib}
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> > --S.
> >>
> >> > On Nov 18, 2011, at 16:33, Graham Dumpleton <
> [email protected]>
> >> wrote:
> >>
> >> >> This is an issue with how MySQLdb Python module is built. Can you 
> tell
> >> >> me how you installed it?
> >>
> >> >> Did you use pip, or did you download package as tar.gz and run 
> setup.py
> >> in it?
> >>
> >> >> I have tried twice before to sort this out with people on IRC but 
> they
> >> >> would not do what I asked them to help me solve it properly. I am at
> >> >> least most of the way along sorting out what the issue is however. 
> :-)
> >>
> >> >> Graham
> >>
> >> >> On 19 November 2011 08:41, mathew davis <[email protected]> 
> wrote:
> >> >>> I am trying to run django on osx 10.7 (lion) with apache mod_wsgi 
> and
> >> >>> virtualenv.
> >> >>> My site works if I use the django testing server:
> >>
> >> >>>>      (baseline)otter:hello mathew$ python manage.py runserver
> >>
> >> >>> but it doesn't work when I run apache. The core of the error seems 
> to be
> >>
> >> >>>>      Library not loaded: libmysqlclient.16.dylib
> >>
> >> >>> I think its to do with the path apache is using to locate
> >> >>> libmysqlclient.16.dylib
> >>
> >> >>> when I run otool in the lib directory it looks good
> >>
> >> >>>>      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)
> >>
> >> >>> but from outside it can't find it
> >>
> >> >>>>      otter:lib mathew$ cd /
> >> >>>>      otter:/ mathew$ otool -L libmysqlclient.16.dylib
> >> >>>>      otool: can't open file: libmysqlclient.16.dylib (No such file 
> or
> >> >>>> directory)
> >>
> >> >>> if i manually set DYLD_LIBRARY_PATH otool works
> >>
> >> >>>> otter:lib mathew$ DYLD_LIBRARY_PATH=/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)
> >>
> >> >>> When I run the django testing server, my .bash_profile sets up the
> >> >>> virtualenv and the path to the mysql dynamic library
> >>
> >> >>>>      export 
> DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH
> >> >>>>      export PATH
> >>
> >> >>> When i run apache it finds my virtualenv paths, but it doesn't seem 
> to
> >> find
> >> >>> the dynamic library path.
> >>
> >> >>> I tried adding this path to /usr/sbin/envvars
> >>
> >> 
>  DYLD_LIBRARY_PATH="/usr/lib:/usr/local/mysql/lib:$DYLD_LIBRARY_PATH">>>>   
>    export DYLD_LIBRARY_PATH
> >>
> >> >>> and to /private/etc/paths.d/libmysql
> >>
> >> >>>>      /usr/local/mysql/lib
> >>
> >> >>> then restarted the machine
> >> >>> but that has not changed the error message.
> >>
> >> >>>>      Error loading MySQLdb module:
> >>
> >> 
> dlopen(/usr/local/python_virtualenv/baseline/lib/python2.7/site-packages/_mysql.so,
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> >>>> 2):
> >> >>>>          Library not loaded: libmysqlclient.16.dylib
> >>
> >> >>> I don't think is a permissions issue:
> >>
> >> >>>>      -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
> >
> > --
> > You received this message because you are subscribed to the Google 
> Groups "modwsgi" group.
> > To post to this group, send email to [email protected]<javascript:>
> .
> > To unsubscribe from this group, send email to 
> [email protected] <javascript:>.
> > For more options, visit this group at 
> http://groups.google.com/group/modwsgi?hl=en.
> >
> >
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/modwsgi/-/bPsejT2rbusJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.

Reply via email to