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
> --
> 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/-/YIrdgT4hh-oJ.
> To post to this group, send email to mod...@googlegroups.com.
> To unsubscribe from this group, send email to
> modwsgi+u...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/modwsgi?hl=en.
>
sudo install_name_tool -change libmysqlclient.16.dylib /full/path/to/libmysqlclient.16.dylib {file which can't load dylib}
--S.
I installed MySQL with the download image
I used brew to install mod_wsgi
and pip to install Django and MySQL-python
as I couldn't remember whether I already had DYLD_LIBRARY_PATH set in
my bash profile when I did this,
I have reinstalled mysql, MySQL-python and mod_wsgi
On Nov 19, 11:33 am, Graham Dumpleton <graham.dumple...@gmail.com>
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
>
> >> Request URL: http://hello.local/Django Version: 1.3.1 Exception
(baseline)otter:lib mathew$ pwd
/usr/local/mysql/lib
(baseline)otter:lib mathew$ sudo install_name_tool -change
libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib
Password:
Usage: install_name_tool [-change old new] ... [-rpath old new] ... [-
add_rpath new] ... [-delete_rpath old] ... [-id name] input
(baseline)otter:lib mathew$ otool -L libmysqlclient.18.dylib
libmysqlclient.18.dylib:
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.0.1)
On Nov 19, 12:23 pm, Simon Kesenci <genera...@gmail.com> 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 <graham.dumple...@gmail.com> 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
>
> >>> Request URL: http://hello.local/Django Version: 1.3.1 Exception
--S.
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/
mysql/lib/libmysqlclient.18.dylib /usr/local/python_virtualenv/
baseline/lib/python2.7/site-packages/_mysql.so
i was wondering how install_name_tool was globally changing references
to libmysqlclient.18.dylib, now I see it is only patching _mysql.so
Well that's fixed my problem, but it would be interesting to
understand why _mysql.so couldn't find libmysqlclient.18.dylib in the
first place
thank you for all you help,
let me know if there is anything I can do if you still wish to get to
the bottom of this problem
thank you
Mathew
> >>>>> Request URL: http://hello.local/DjangoVersion: 1.3.1 Exception
--S.
for now I'm happy that configuration is work, but next time I install
python mysql, I'll experiment again and seee if I can find a way to
make it work without install_name_tool
thank you simon
> ...
>
> read more »
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 <graham.dumple...@gmail.com>
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 <genera...@gmail.com> 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 <graham.dumple...@gmail.com>
> 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
>
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
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.
To view this discussion on the web visit https://groups.google.com/d/msg/modwsgi/-/bPsejT2rbusJ.