Helaas is er op dit moment niet echt een triviale oplossing. Als u MySQL met Python moet gebruiken, is de eenvoudigste en meest betrouwbare oplossing op OS X om alles te installeren - Python, MySQLdb, alle andere benodigde Python-pakketten van derden, MySQL-clientbibliotheken en, indien nodig, MySQL-serverbibliotheken en hulpprogramma's - een pakketbeheersysteem gebruiken, zoals MacPorts . Het proberen om de verschillende componenten van verschillende bronnen te installeren, stuit vaak op problemen met incompatibiliteit gebouwde uitvoerbare bestanden en bibliotheken:32-bits versus 64-bits, verschillende ABI's (10,3 versus 10,6) enz.
Voor een systeem met Xcode en het MacPorts-basissysteem geïnstalleerd, kunt u alles met één commando bouwen en installeren:
sudo port install py27-mysql
Als je de MySQL-server ook nodig hebt:
sudo port install py27-mysql mysql5-server
Alle door MacPorts geïnstalleerde uitvoerbare bestanden worden standaard geïnstalleerd in /opt/local
, dus je hoeft alleen maar dingen vanaf daar te doen:
/opt/local/bin/python2.7
Om het uw gebruikers gemakkelijker te maken, zou u MacPorts moeten kunnen gebruiken om de set noodzakelijke poorten als binaire archieven te bouwen en een script op te zetten om het MacPorts-basissysteem en vervolgens uw vooraf gebouwde pakketten te installeren. Er is wat informatie hierover in de MacPorts-gids hier
. Veel daarvan is echter verouderd voor MacPorts 2.0.x. Totdat de gids is bijgewerkt, is er informatie die hier . De veiligste benadering zou zijn om voor elke ondersteunde OS X-release een andere set pakketten te bouwen. Het misschien mogelijk zijn om één opwaarts compatibele set te bouwen op het oudste systeem dat nodig is:bijvoorbeeld, bouw pakketten op 10.5 die ook zouden werken op 10.6 en 10.7 systemen. Om interferentie met MacPorts-installaties van klanten te voorkomen, kunt u ook het MacPorts-basissysteem vanaf de bron bouwen en de hoofdmap van de installatie wijzigen in iets anders dan /opt/local
.
Een meer idiomatische benadering van OS X zou zijn om py2app te gebruiken om een applicatiebundel te maken die Python en de MySQL-clientbibliotheken bevat. Ik weet niet of iemand dat met succes heeft gedaan.
Nog een suggestie:als je niet echt een externe server nodig hebt, overweeg dan om SQLite te gebruiken. Ondersteuning voor SQLite is opgenomen in de Python Standard Library.