It seemed easy but took quite time for me to install MySQLdb library on Python on Mac Osx 10.5
here are 2 links which saved day for me..
http://stackoverflow.com/questions/3061277/python-mysql-wrong-architecture-error
I have a fresh MacBook Air, and I managed to get MySQLdb working by doing the following: (Snow Leopard 10.6.6, preinstalled Python)
uname -a
Darwin Braindamage.local 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386
Download the MySQL 32-bit dmg file from mysql pages, Install it.
Add the following lines to your ~/.profile (or ~/.bash_profile):
PATH="/usr/local/mysql/bin:${PATH}"
export PATH
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
export VERSIONER_PYTHON_PREFER_64_BIT=no
export VERSIONER_PYTHON_PREFER_32_BIT=yes
http://stackoverflow.com/questions/1448429/how-to-install-mysqldb-python-data-access-library-to-mysql-on-mac-os-x
here are numerous step-by-steps on how to build and install the MySQLdb libraries. They often have subtle differences. This seemed the most popular to me, and provided the working solution. I've reproduced it with a couple of edits below
Step 0: Before I start, I assumed that you have MySQL(32 bit version) and Python installed on the mac.
Step 1: Download the latest MySQL for Python adapter from SourceForge.
Step 2: Extract your downloaded package:
tar xzvf MySQL-python-1.2.2.tar.gz
Step 3: Inside the folder, clean the package:
sudo python setup.py clean
COUPLE OF EXTRA STEPS, (from this comment)
Step 3b: Remove everything under your MySQL-python-1.2.2/build/* directory -- don't trust the "python setup.py clean" to do it for you
Step 3c: Remove the egg under Users/$USER/.python-eggs
Step 4: Originally required editing _mysql.c, but is now NO LONGER NECESSARY. MySQLdb community seem to have fixed this bug now.
Step 5: Create a symbolic link under lib to point to a sub-directory called mysql. This is where it looks for during compilation.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Step 6: Edit the setup_posix.py and change the following
mysql_config.path = "mysql_config"
to
mysql_config.path = "/usr/local/mysql/bin/mysql_config"
Step 7: In the same directory, rebuild your package (ignore the warnings that comes with it)
sudo python setup.py build
Step 8: Install the package and you are done.
sudo python setup.py install
Step 9: Test if it's working. It works if you can import MySQLdb.
python
>>> import MySQLdb
One final hiccup though is that if you start Python from the build directory you will get this error:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, but XXXX/MySQL-python-1.2.3c1 is being added to sys.path
This is pretty easy to Google, but to save you the trouble you will end up here (or maybe not... not a particularly future-proof URL) and figure out that you need to cd .. out of build directory and the error should disappear.
As I wrote at the top, I'd love to see this answer generalised, as there are numerous other specific experiences of this horrible problem out there. Edit away, or provide your own, better answer.
1 comment:
Things went well but at the end, on
>> import MySQLdb
I received happy message saying
Traceback (most recent call last):
File "", line 1, in
File "build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py", line 19, in
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 7, in
File "build/bdist.macosx-10.6-universal/egg/_mysql.py", line 6, in __bootstrap__
ImportError: dlopen(/Users/popara/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): no suitable image found. Did find:
/Users/popara/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so: mach-o, but wrong architecture
mach-o, but wrong architecture
Google here I come!
Thanks for all those steps btw :)
Post a Comment