tags:

views:

609

answers:

2

Hello members,

I am trying to install the MySQL-python on MAC OS 10.6 (Snow leopard, 64 bit). I followed the steps: 1. Installed MySQL for Mac OS X ver. 10.6 (x86, 64-bit), DMG Archive. 2. Downloaded MySQL-python-1.2.3c1.tar.gz and unzipped it 3. CD to MySQL-python-1.2.3c1 and built it as: ARCHFLAGS="-arch x86_64" python setup.py build (see output bnelow) 4. Installed it as: ARCHFLAGS="-arch x86_64" python setup.py install 5. But when I tried to import MySQLdb to python, I am getting error message

import MySQLdb
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.macosx-10.3-x86_64/egg/MySQLdb/__init__.py", line 19, in <module>
  File "build/bdist.macosx-10.3-x86_64/egg/_mysql.py", line 7, in <module>
  File "build/bdist.macosx-10.3-x86_64/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/krokodil/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.3-x86_64.egg-tmp/_mysql.so, 2): no suitable image found.  Did find:
 /Users/krokodil/.python-eggs/MySQL_python-1.2.3c1-py2.6-macosx-10.3-x86_64.egg-tmp/_mysql.so: mach-o, but wrong architecture

This "macosx-10.3-x86_64" is bothering me - it seems that somehow the build/install thought that I am still on Mac OS 10.3. Please also see Build and Install capture below. It also using /Developer/SDKs/MacOSX10.4u.sdk compiler, not /Developer/SDKs/MacOSX10.6.sdk

I am using fresh install of Python 2.6.4. I saw people having probles. Anyone found a good solution?

Thank you Vlad

BUILD

krokodil:MySQL-python-1.2.3c1 krokodil$  ARCHFLAGS="-arch x86_64" python setup.py build 
running build
running build_py
creating build
creating build/lib.macosx-10.3-x86_64-2.6
copying _mysql_exceptions.py -> build/lib.macosx-10.3-x86_64-2.6
creating build/lib.macosx-10.3-x86_64-2.6/MySQLdb
copying MySQLdb/__init__.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb
copying MySQLdb/converters.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb
copying MySQLdb/connections.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb
copying MySQLdb/cursors.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb
copying MySQLdb/release.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb
copying MySQLdb/times.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb
creating build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/ER.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/FLAG.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/REFRESH.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants
copying MySQLdb/constants/CLIENT.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants
running build_ext
building '_mysql' extension
creating build/temp.macosx-10.3-x86_64-2.6
gcc-4.0 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3 -Dversion_info=(1,2,3,'gamma',1) -D__version__=1.2.3c1 -I/usr/local/mysql/include -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c _mysql.c -o build/temp.macosx-10.3-x86_64-2.6/_mysql.o -g -Os -arch x86_64 -fno-common -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL
In file included from _mysql.c:36:
/usr/local/mysql/include/my_config.h:1053:1: warning: "HAVE_WCSCOLL" redefined
In file included from /Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h:8,
                 from pymemcompat.h:10,
                 from _mysql.c:29:
/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/pyconfig.h:805:1: warning: this is the location of the previous definition
gcc-4.0 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g -bundle -undefined dynamic_lookup -arch x86_64 build/temp.macosx-10.3-x86_64-2.6/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm -lmygcc -o build/lib.macosx-10.3-x86_64-2.6/_mysql.so

INSTALL

krokodil:MySQL-python-1.2.3c1 krokodil$  ARCHFLAGS="-arch x86_64" python setup.py install
running install
running bdist_egg
running egg_info
writing MySQL_python.egg-info/PKG-INFO
writing top-level names to MySQL_python.egg-info/top_level.txt
writing dependency_links to MySQL_python.egg-info/dependency_links.txt
reading manifest file 'MySQL_python.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'MySQL_python.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.3-x86_64/egg
running install_lib
running build_py
copying MySQLdb/release.py -> build/lib.macosx-10.3-x86_64-2.6/MySQLdb
running build_ext
creating build/bdist.macosx-10.3-x86_64
creating build/bdist.macosx-10.3-x86_64/egg
copying build/lib.macosx-10.3-x86_64-2.6/_mysql.so -> build/bdist.macosx-10.3-x86_64/egg
copying build/lib.macosx-10.3-x86_64-2.6/_mysql_exceptions.py -> build/bdist.macosx-10.3-x86_64/egg
creating build/bdist.macosx-10.3-x86_64/egg/MySQLdb
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/__init__.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/connections.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb
creating build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants/__init__.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants/CLIENT.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants/CR.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants/ER.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants/FIELD_TYPE.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants/FLAG.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/constants/REFRESH.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/converters.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/cursors.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/release.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb
copying build/lib.macosx-10.3-x86_64-2.6/MySQLdb/times.py -> build/bdist.macosx-10.3-x86_64/egg/MySQLdb
byte-compiling build/bdist.macosx-10.3-x86_64/egg/_mysql_exceptions.py to _mysql_exceptions.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/connections.py to connections.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants/CLIENT.py to CLIENT.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants/CR.py to CR.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants/ER.py to ER.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants/FIELD_TYPE.py to FIELD_TYPE.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants/FLAG.py to FLAG.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/constants/REFRESH.py to REFRESH.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/converters.py to converters.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/cursors.py to cursors.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/release.py to release.pyc
byte-compiling build/bdist.macosx-10.3-x86_64/egg/MySQLdb/times.py to times.pyc
creating stub loader for _mysql.so
byte-compiling build/bdist.macosx-10.3-x86_64/egg/_mysql.py to _mysql.pyc
creating build/bdist.macosx-10.3-x86_64/egg/EGG-INFO
copying MySQL_python.egg-info/PKG-INFO -> build/bdist.macosx-10.3-x86_64/egg/EGG-INFO
copying MySQL_python.egg-info/SOURCES.txt -> build/bdist.macosx-10.3-x86_64/egg/EGG-INFO
copying MySQL_python.egg-info/dependency_links.txt -> build/bdist.macosx-10.3-x86_64/egg/EGG-INFO
copying MySQL_python.egg-info/top_level.txt -> build/bdist.macosx-10.3-x86_64/egg/EGG-INFO
writing build/bdist.macosx-10.3-x86_64/egg/EGG-INFO/native_libs.txt
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/MySQL_python-1.2.3c1-py2.6-macosx-10.3-x86_64.egg' and adding 'build/bdist.macosx-10.3-x86_64/egg' to it
removing 'build/bdist.macosx-10.3-x86_64/egg' (and everything under it)
Processing MySQL_python-1.2.3c1-py2.6-macosx-10.3-x86_64.egg
Removing /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.3-x86_64.egg
Copying MySQL_python-1.2.3c1-py2.6-macosx-10.3-x86_64.egg to /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
Removing MySQL-python 1.2.3c1 from easy-install.pth file
Adding MySQL-python 1.2.3c1 to easy-install.pth file

Installed /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQL_python-1.2.3c1-py2.6-macosx-10.3-x86_64.egg
Processing dependencies for MySQL-python==1.2.3c1
Finished processing dependencies for MySQL-python==1.2.3c1
+1  A: 

The python 2.6.4 you are using is 32-bit only (definitely true if you downloaded the OS X installer from python.org). You can't override the architecture for extension modules; they have to be compatible with the base python. The 10.3 shows up because the python you are using was built with a deployment target of 10.3 as it is designed to run on multiple versions of OS X. If you want to use a 64-bit version of MySQL, you'll need to use a 64-bit version of python, like the Apple-suppled python 2.6.1.

Ned Deily
A: 

So this seems to be a common issue. It seems that if you have a mac that once had a previous install of mac os (pre 10.6, snow leopard) then just doing an in place upgrade of the os doesn't upgrade the developer tools or the python version installed??

so is the solution to this ( a clean system install ... with all the associated pain ... seems extreme) or can you compile a python version from source and get the 64 bit version? I believe that when i upgraded to 10.6 i HAD to reinstall mysql (i don't remember having a option of a 32 or 64 bit version .. only the 64? but the version i had working with 10.5 didn't run after the system upgrade) ....

i am trying to get started with python, web2py and any db: mysql or postgres ... but i am having trouble getting the drivers for either db installed. arg!!