When I do it I get: $ otool -L _mysql.so _mysql.so: /usr/local/mysql/lib/libmysqlclient_r.16.dylib (compatibility version 17.0.0, current version 17.0.0) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.10)
See what I mean about having full path. That way I know for sure that is being able to be found. Without the full path, says that doesn't actually know where to find it. What happens if you do: cd /usr/local/mysql/lib otool -L /Users/jianbao/projects/tao.com/djangoSite/lib/python2.7/site-packages/_mysql.so I can't remember if the current directory is looked at. The try: DYLD_FALLBACK_LIBRARY_PATH=/usr/local/mysql/lib otool -L /Users/jianbao/projects/tao.com/djangoSite/lib/python2.7/site-packages/_mysql.so but run it from outside of the lib directory. Finally you might also try: otool -l /Users/jianbao/projects/tao.com/djangoSite/lib/python2.7/site-packages/_mysql.so That is lower case 'L' instead of upper case. What do you get for load commands related to libraries in the output. Load command 7 cmd LC_LOAD_DYLIB cmdsize 72 name /usr/local/mysql/lib/libmysqlclient_r.16.dylib (offset 24) time stamp 2 Thu Jan 1 10:00:02 1970 current version 17.0.0 compatibility version 17.0.0 Load command 8 cmd LC_LOAD_DYLIB cmdsize 48 name /usr/lib/libz.1.dylib (offset 24) time stamp 2 Thu Jan 1 10:00:02 1970 current version 1.2.3 compatibility version 1.0.0 Load command 9 cmd LC_LOAD_DYLIB cmdsize 56 name /usr/lib/libSystem.B.dylib (offset 24) time stamp 2 Thu Jan 1 10:00:02 1970 current version 125.2.10 compatibility version 1.0.0 Graham On 24 August 2011 14:19, Jianbao Tao <jianbao....@gmail.com> wrote: > Alright. Here is what I got. >>$ DYLD_LIBRARY_PATH=/usr/local/mysql/lib 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) > Not so much of difference, though. Any ideas? > On Tue, Aug 23, 2011 at 10:10 PM, Graham Dumpleton > <graham.dumple...@gmail.com> wrote: >> >> On 24 August 2011 13:55, Jianbao Tao <jianbao....@gmail.com> 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 >> > <graham.dumple...@gmail.com> wrote: >> >> >> >> On 24 August 2011 12:31, Jianbao Tao <jianbao....@gmail.com> 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 >> >> > <graham.dumple...@gmail.com> 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 <jianbao....@gmail.com> >> >> >> 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 >> >> >> > <graham.dumple...@gmail.com> wrote: >> >> >> > >> >> >> > On 24 August 2011 08:58, Jim <jianbao....@gmail.com> 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 modwsgi@googlegroups.com. >> >> >> >> To unsubscribe from this group, send email to >> >> >> >> modwsgi+unsubscr...@googlegroups.com. >> >> >> >> 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 modwsgi@googlegroups.com. >> >> >> > To unsubscribe from this group, send email to >> >> >> > >> >> >> > >> >> >> > modwsgi+unsubscr...@googlegroups.com <modwsgi%2bunsubscr...@googlegroups.com>. >> >> >> > 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 modwsgi@googlegroups.com. >> >> >> To unsubscribe from this group, send email to >> >> >> modwsgi+unsubscr...@googlegroups.com. >> >> >> 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 modwsgi@googlegroups.com. >> >> > To unsubscribe from this group, send email to >> >> > modwsgi+unsubscr...@googlegroups.com. >> >> > 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 modwsgi@googlegroups.com. >> >> To unsubscribe from this group, send email to >> >> modwsgi+unsubscr...@googlegroups.com. >> >> 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 modwsgi@googlegroups.com. >> > To unsubscribe from this group, send email to >> > modwsgi+unsubscr...@googlegroups.com. >> > 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 modwsgi@googlegroups.com. >> To unsubscribe from this group, send email to >> modwsgi+unsubscr...@googlegroups.com. >> 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 modwsgi@googlegroups.com. > To unsubscribe from this group, send email to > modwsgi+unsubscr...@googlegroups.com. > 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 modwsgi@googlegroups.com. To unsubscribe from this group, send email to modwsgi+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/modwsgi?hl=en.