Desværre er der virkelig ingen triviel løsning i øjeblikket. Hvis du har brug for at bruge MySQL med Python, er den enkleste og mest pålidelige løsning på OS X at installere alt - Python, MySQLdb, eventuelle andre nødvendige Python-pakker fra tredjepart, MySQL-klientbiblioteker og, om nødvendigt, MySQL-serverbiblioteker og -værktøjer - ved at bruge et pakkehåndteringssystem, såsom MacPorts . At prøve at installere de forskellige komponenter fra forskellige kilder løber ofte ind i problemer med inkompatibilitetsbyggede eksekverbare filer og biblioteker:32-bit vs 64-bit, forskellige ABI'er (10.3 vs 10.6) osv.
For et system med Xcode og MacPorts-basesystemet installeret, kan du bygge og installere alt med én kommando:
sudo port install py27-mysql
Hvis du også har brug for MySQL-serveren:
sudo port install py27-mysql mysql5-server
Alle MacPorts-installerede eksekverbare filer vil blive installeret som standard i /opt/local
, så du skal bare køre tingene derfra:
/opt/local/bin/python2.7
For at gøre det nemmere for dine brugere, bør du være i stand til at bruge MacPorts til at bygge det sæt nødvendige porte som binære arkiver og opsætte et script til at installere MacPorts-basesystemet og derefter dine forudbyggede pakker. Der er nogle oplysninger om dette i MacPorts-vejledningen her
. Meget af det er dog forældet for MacPorts 2.0.x. Indtil vejledningen er opdateret, er der information, der starter her . Den sikreste tilgang ville være at bygge et andet sæt pakker for hver understøttet OS X-udgivelse. Det måske være muligt at bygge et opadkompatibelt sæt på det ældste system, der er nødvendigt:f.eks. byg pakker på 10.5, der også ville fungere på 10.6 og 10.7 systemer. For at forhindre interferens med kundernes MacPorts-installationer kan du også bygge MacPorts-basesystemet fra kilden og ændre installationsroden til noget andet end /opt/local
.
En mere idiomatisk tilgang til OS X ville være at bruge py2app at oprette en applikationspakke, der inkluderer Python og MySQL-klientbibliotekerne. Jeg ved ikke, om nogen har gjort det med succes.
Et andet forslag:Hvis du ikke rigtig har brug for en ekstern server, så overvej at bruge SQLite i stedet. Support til SQLite er inkluderet i Python Standard Library.