On 24 August 2011 13:55, Jianbao Tao <[email protected]> wrote: > Sure. Here is what I got. >>$ file >> /Users/jianbao/projects/tao.com/djangoSite/lib/python2.7/site-packages/_mysql.so > /Users/jianbao/projects/tao.com/djangoSite/lib/python2.7/site-packages/_mysql.so: > Mach-O 64-bit bundle x86_64 >>$ otool -L >> /Users/jianbao/projects/tao.com/djangoSite/lib/python2.7/site-packages/_mysql.so > /Users/jianbao/projects/tao.com/djangoSite/lib/python2.7/site-packages/_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.0) > I don't see why full path would make any difference, though. > Any thoughts?
The otool output should show a full path name for 'libmysqlclient.18.dylib' else it is indicating that it didn't know where to find it. This worries me a bit as if otool doesn't know where it is coming from then under Apache it will not either. Ie., could not resolve it and thus why image not found. This may be the actual problem. Ie., Apache doesn't know where to find the library at run time and not the 32 bit vs 64 bit issue. Try running: DYLD_LIBRARY_PATH=/usr/local/mysql/lib otool -L /Users/jianbao/projects/tao.com/djangoSite/lib/python2.7/site-packages/_mysql.so What do you get for that? Graham > On Tue, Aug 23, 2011 at 9:39 PM, Graham Dumpleton > <[email protected]> wrote: >> >> On 24 August 2011 12:31, Jianbao Tao <[email protected]> wrote: >> > Graham, >> > This is what I got. >> >>$ file ./lib/python2.7/site-packages/_mysql.so >> > ./lib/python2.7/site-packages/_mysql.so: Mach-O 64-bit bundle x86_64 >> >>$ otool -L ./lib/python2.7/site-packages/_mysql.so >> > ./lib/python2.7/site-packages/_mysql.so: >> > libmysqlclient.18.dylib (compatibility version 18.0.0, current version >> > 18.0.0) >> >> Can you change working directory and run this again with full path >> name to _mysql.so. >> >> It says libmysqlclient.18.dylib but missing full path context to know >> for sure where that is coming from. >> >> > /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version >> > 125.2.0) >> > So, it seems _mysql.so is already for x86_64 architecture. But there is >> > a >> > inconsistency about libSystem.B.dylib according the versions reported by >> > otool. But I am not sure if that dylib is ever used by MySQLdb or not. >> >> No so worried about the system library versioning. Probably normal. >> >> Graham >> >> > Any thoughts? >> > Jim >> > On Tue, Aug 23, 2011 at 6:41 PM, Graham Dumpleton >> > <[email protected]> wrote: >> >> >> >> What do you get if you run 'file' on _mysql.so extension module file in >> >> Python installation? Also run 'otool -L _mysql.so' as well to see what >> >> library it is finding. You have 64 bit libraries so should be okay >> >> unless >> >> you have 32 bit somewhere else and it is finding that instead. >> >> >> >> Graham >> >> >> >> On Wednesday, 24 August 2011, Jianbao Tao <[email protected]> >> >> wrote: >> >> > Thank you so much, Graham. You may have pointed me to the right >> >> > direction. >> >> > So, the following is what I get, where I basically filed all >> >> > libmysqlclient* files under /usr/local/mysql/lib/. It seems the mysql >> >> > I >> >> > installed is for i386 architecture, but all the libmysqlclient files >> >> > seem >> >> > for x86_64, which is really confusing. Anyway, do you have any ideas >> >> > of >> >> > what's happening here? >> >> >>$ mysql --version >> >> > mysql Ver 14.14 Distrib 5.5.14, for osx10.6 (i386) using readline >> >> > 5.1 >> >> >>$ ls /usr/local/mysql/lib/libmysqlclient* >> >> > /usr/local/mysql/lib/libmysqlclient.18.dylib >> >> > /usr/local/mysql/lib/libmysqlclient_r.18.dylib >> >> > /usr/local/mysql/lib/libmysqlclient.a >> >> > /usr/local/mysql/lib/libmysqlclient_r.a >> >> > /usr/local/mysql/lib/libmysqlclient.dylib >> >> > /usr/local/mysql/lib/libmysqlclient_r.dylib >> >> >>$ file /usr/local/mysql/lib/libmysqlclient.18.dylib >> >> > /usr/local/mysql/lib/libmysqlclient.18.dylib: Mach-O 64-bit >> >> > dynamically >> >> > linked shared library x86_64 >> >> >>$ file /usr/local/mysql/lib/libmysqlclient.dylib >> >> > /usr/local/mysql/lib/libmysqlclient.dylib: Mach-O 64-bit dynamically >> >> > linked shared library x86_64 >> >> >>$ file /usr/local/mysql/lib/libmysqlclient.a >> >> > /usr/local/mysql/lib/libmysqlclient.a: current ar archive random >> >> > library >> >> >>$ file /usr/local/mysql/lib/libmysqlclient_r.18.dylib >> >> > /usr/local/mysql/lib/libmysqlclient_r.18.dylib: Mach-O 64-bit >> >> > dynamically linked shared library x86_64 >> >> >>$ file /usr/local/mysql/lib/libmysqlclient_r.dylib >> >> > /usr/local/mysql/lib/libmysqlclient_r.dylib: Mach-O 64-bit >> >> > dynamically >> >> > linked shared library x86_64 >> >> >>$ file /usr/local/mysql/lib/libmysqlclient_r.a >> >> > /usr/local/mysql/lib/libmysqlclient_r.a: current ar archive random >> >> > library >> >> > >> >> > >> >> > On Tue, Aug 23, 2011 at 5:09 PM, Graham Dumpleton >> >> > <[email protected]> wrote: >> >> > >> >> > On 24 August 2011 08:58, Jim <[email protected]> wrote: >> >> >> Hello folks, >> >> >> This probably has been discussed many times, but I still can't find >> >> >> any >> >> >> solution yet. Basically, it turns out that python can load MySQLdb >> >> >> just >> >> >> fine, but Apache can't load MySQLdb from the wsgi script. >> >> >> Here is the configuration of my machine. >> >> >> Mac OS X Snow Leopard 10.6.8 >> >> >> Apache2 (shipped with Snow Leopard) >> >> > >> >> > Which is fat and by default will run as 64 bit. >> >> > >> >> >> Python 2.7 (from python.org) >> >> > >> >> > Which I believe now comes as fat binary so should be okay. >> >> > >> >> >> virtualenv >> >> >> MySQL-python 1.2.3 >> >> > >> >> > This is where problems start. >> >> > >> >> > Because Apache is going to run as 64 bit, and because MySQL client >> >> > libraries are not fat but for a specific architecture, you need to >> >> > ensure you installed 64 bit MySQL and not 32 but version. >> >> > >> >> > For example, on my system I have: >> >> > >> >> > mysql-5.1.53-osx10.6-x86_64 >> >> > >> >> > and get: >> >> > >> >> > $ file /usr/local/mysql/lib/libmysqlclient.16.dylib >> >> > /usr/local/mysql/lib/libmysqlclient.16.dylib: Mach-O 64-bit >> >> > dynamically linked shared library x86_64 >> >> > >> >> > I suspect you will find that yours is only 32 bit and not 64 bit. >> >> > That >> >> > is why you would get error: >> >> > >> >> > Reason: image not found >> >> > >> >> > Can you run the 'file' command on the dylib and see what it says. >> >> > >> >> > Graham >> >> > >> >> >> BTW, I can import MySQLdb with no problem under python interpreter. >> >> >> I am using python2.7 in a virtual environment created by virtualenv. >> >> >> Here is >> >> >> the error info extracted from the Apache error log. To make the >> >> >> lines >> >> >> shorter, I deleted all the time tags in the brackets. >> >> >> Any ideas how to fix it? >> >> >> [] mod_wsgi (pid=3136): Target WSGI script >> >> >> '/Users/jianbao/projects/tao.com/mysite/apache/django.wsgi' cannot >> >> >> be >> >> >> loaded >> >> >> as Python module. >> >> >> [] mod_wsgi (pid=3136): Exception occurred processing WSGI script >> >> >> '/Users/jianbao/projects/tao.com/mysite/apache/django.wsgi'. >> >> >> [] Traceback (most recent call last): >> >> >> [] File >> >> >> "/Users/jianbao/projects/tao.com/mysite/apache/django.wsgi", >> >> >> line >> >> >> 56, in <module> >> >> >> [] import MySQLdb >> >> >> [] File >> >> >> >> >> >> >> >> >> "/Users/jianbao/projects/tao.com/mysite/lib/python2.7/site-packages/MySQLdb/__init__.py", >> >> >> line 19, in <module> >> >> >> [] import _mysql >> >> >> [] ImportError: >> >> >> >> >> >> >> >> >> dlopen(/Users/jianbao/projects/tao.com/mysite/lib/python2.7/site-packages/_mysql.so, >> >> >> 2): Library not loaded: libmysqlclient.18.dylib >> >> >> [] Referenced from: >> >> >> >> >> >> >> >> >> /Users/jianbao/projects/tao.com/mysite/lib/python2.7/site-packages/_mysql.so >> >> >> [] Reason: image not found >> >> >> >> >> >> -- >> >> >> 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/-/_S2GuYUGqosJ. >> >> >> 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. >> >> >> >> >> > >> >> > -- >> >> > You received this message because you are subscribed to the Google >> >> > Groups "modwsgi" group. >> >> > To post to this group, send email to >> >> > >> >> > -- >> >> > You received this message because you are subscribed to the Google >> >> > Groups "modwsgi" group. >> >> > To post to this group, send email to [email protected]. >> >> > To unsubscribe from this group, send email to >> >> > >> >> > [email protected] <modwsgi%[email protected]>. >> >> > 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 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. >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups >> > "modwsgi" group. >> > 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. >> > >> >> -- >> You received this message because you are subscribed to the Google Groups >> "modwsgi" group. >> 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. >> > > -- > You received this message because you are subscribed to the Google Groups > "modwsgi" group. > 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. > -- You received this message because you are subscribed to the Google Groups "modwsgi" group. 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.
