views:

1207

answers:

7

I'm new to the Mac OS and I'm just about ready to throw my brand new MacBook pro out the window. Every tutorial on setting up a Django development environment on Leopard is insidiously wrong. They are all skipping over one step, or assuming you have setup something one way, or are just assuming that I know one thing that I must not.

I'm very familiar with how to setup the environment on Ubuntu/Linux, and the only part I'm getting stuck on with OSX is how to install MySQL, autostart it, and install the python mysql bindings. I think my mistake was using a hodgepodge of tools I don't fully understand, I used fink to install MySQL and its dev libraries and then tried to build the Python-mysql bindings from source (but they won't build.)

UPDATE: I installed the Binary MySQL package from: http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg and I got MySQL server running (can access with admin.) The MySQL version I got from port was rubbish, I could not get it to run at all.

I modified the source for the Python-MySQL package as per the answer I chose, but I still got compilation errors that I listed in the comments. I was able to fix these by adding /usr/local/mysql/bin/ to my path in my "~/.profile" file. " PATH=/usr/local/mysql/bin:$PATH "

Thanks for the help, I was very wary about editing the source code since this operation had been so easy on Ubuntu, but I'll be more willing to try that in the future. I'm really missing Ubuntu's "apt-get" command, it makes life very easy and simple sometimes. I already have an Ubuntu VMWare image running on my MAC, so I can always use that as a fallback (plus it more closely matches my production machines so should be a good test environment for debugging production problems.)

+2  A: 

You can use the BSD-alike(?) http://macports.org, which provides gentoo-like build-it-yourself installations of a wide swath of software you'd expect to find in a Linux distro.

Alternatively you could just run Ubuntu in a virtual machine as your test stage.

It's honestly a simple

# port install <pkgname>

James Cape
A: 

the python mysqldb packge is in fink, but it's in the unstable tree. Just enable the unstable tree and you will be able to install it.

Or, if you're up for having two alternate package managers, it's also in macports.

I also had problems last time I had to do this and ended up going with the fink version and saving a lot of headache.

ʞɔıu
+11  A: 

Did the MySQL and MySQL-dev installations go smoothly? Can you run MySQL, connect to it and so on? Does /usr/local/mysql/include contain lots of header files? (I've got 46 header files there, for reference).

If so, MySQL should be good to go. There are still a few manual steps required to compile MySQL-python, however.

This is a decent guide: I've included the salient steps below.


  1. Download the MySQL-python source (v1.2.2 at time of writing: all subsequent instructions are for this version)

    $ tar xzf MySQL-python-1.2.2.tar.gz && cd MySQL-python-1.2.2
    
  2. Edit _mysql.c: remove lines 37-39 and change lines 481-482. Here's the diff:

    37,39d36
    < #ifndef uint
    < #define uint unsigned int
    < #endif
    484,485c481,482
    <         uint port = MYSQL_PORT;
    <         uint client_flag = 0;
    ---
    >         unsigned int port = MYSQL_PORT;
    >         unsigned int client_flag = 0;
    
  3. Symlink the libs to where MySQL-python expects them:

    $ sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
    
  4. In your MySQL-python-1.2.2 directory, rebuild your package:

    $ sudo python setup.py build
    

    Note: You will receive a warning, ignore it.

  5. Install the package:

    $ sudo python setup.py install
    


As for starting MySQL, there are instructions here on starting it as a service. Personally, I just run

sudo mysqld_safe

manually, backgrounding it with ^Z and bg once I've put in my password.

Alabaster Codify
I still get compilation errors:sh: mysql_config: command not foundTraceback (most recent call last): File "setup.py", line 16, in <module> metadata, options = get_config() File "/Users/michael/src/MySQL-python-1.2.2/setup_posix.py", line 43, in get_config libs = mysql_config("libs_r")
MikeN
File "/Users/michael/src/MySQL-python-1.2.2/setup_posix.py", line 24, in mysql_config raise EnvironmentError, "%s not found" % mysql_config.pathEnvironmentError: mysql_config not found
MikeN
ok, fixed the above syntax errors. I needed to update my PATH environment variable to include the path to mysql_config.
MikeN
Note that the default Python is 32 bit on Leopard, so use the 32 bit MySQL installer (x86) and not 64 bit (x86_64). Or MySQLdb won't link at all.An alternative is to get 64 bit python working on OS X, but that's a whole other bag of hurt...
Pieter
+2  A: 

Assuming this is just a development environment, you could try using sqlite3 as your database. Mileage may vary depending on how low-level you need to get with the database for your specific application.

Andy Hume
A: 

I put a step-by-step on my blog that might help:

http://www.djangrrl.com/view/installing-django-with-mysql-on-mac-os-x/

A: 

If you are a Mac user, install MacPort. Almost any Linux/Unix app is available through "port". Simple and easy to manage.

Stephen Cox
A: 

Install macports. Run port install mysql.

Worked for me!

August Lilleaas