sql >> Databasteknik >  >> RDS >> Mysql

Hur installerar man MySQLdb (Python data access library to MySQL) på Mac OS X?

Uppdatering för de som använder Python3: Du kan helt enkelt använda conda install mysqlclient för att installera de bibliotek som krävs för att använda MySQLdb som det för närvarande finns. Följande SO-fråga var en användbar ledtråd:Python 3 ImportError:Ingen modul med namnet 'ConfigParser' . Genom att installera mysqlclient installeras mysqlclient, mysql-connector och llvmdev (åtminstone installerade den dessa 3 bibliotek på min maskin).

Här är berättelsen om min vandrande erfarenhet av detta problem. Skulle gärna se det redigerat eller generaliserat om du har bättre erfarenhet av problemet... använd lite av den SÅ magin.

Obs! Kommentarerna i nästa stycke tillämpas på Snow Leopard, men inte på Lion, som verkar kräva 64-bitars MySQL

Först och främst säger författaren (fortfarande?) av MySQLdb här att ett av de mest skadliga problemen är att OS X kommer installerat med en 32-bitarsversion av Python, men de flesta genomsnittliga joes (inklusive mig själv) hoppar förmodligen för att installera 64-bitarsversionen av MySQL. Dåligt drag... ta bort 64-bitarsversionen om du har installerat den (instruktioner för denna krångliga uppgift finns på SO här ), ladda ner och installera sedan 32-bitarsversionen (paketet här a> )

Det finns många steg-för-steg om hur man bygger och installerar MySQLdb-biblioteken. De har ofta subtila skillnader. Detta verkade vara den mest populära för mig och gav den fungerande lösningen. Jag har återskapat det med ett par redigeringar nedan

Steg 0: Innan jag börjar antar jag att du har MySQL, Python och GCC installerat på Mac.

Steg 1: Ladda ner den senaste MySQL för Python-adaptern från SourceForge.

Steg 2: Extrahera ditt nedladdade paket:

tar xzvf MySQL-python-1.2.2.tar.gz

Steg 3: Rengör paketet inuti mappen:

sudo python setup.py clean

PAR EXTRA STEG, (från denna kommentar )

Steg 3b: Ta bort allt under din MySQL-python-1.2.2/build/*-katalog -- lita inte på att "python setup.py clean" gör det åt dig

Steg 3c: Ta bort ägget under Users/$USER/.python-eggs

Steg 4: Ursprungligen krävdes redigering av _mysql.c, men är nu INTE NÖDVÄNDIGT LÄNGRE. MySQLdb-communityt verkar ha åtgärdat detta fel nu.

Steg 5: Skapa en symbolisk länk under lib för att peka på en underkatalog som heter mysql. Det är här den letar efter under kompileringen.

sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

Steg 6: Redigera setup_posix.py och ändra följande

mysql_config.path ="mysql_config"

till

mysql_config.path ="/usr/local/mysql/bin/mysql_config"

Steg 7: I samma katalog, bygg om ditt paket (ignorera varningarna som följer med det)

sudo python setup.py build

Steg 8: Installera paketet och du är klar.

sudo python setup.py install

Steg 9: Testa om det fungerar. Det fungerar om du kan importera MySQLdb.

python

>>> import MySQLdb

Steg 10: Om du när du försöker importera får ett felmeddelande om att Library not loaded: libmysqlclient.18.dylib slutar med:Reason: image not found du måste skapa ytterligare en symbollänk som är:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Du bör då kunna import MySQLdb utan några fel.

Ett sista problem är dock att om du startar Python från byggkatalogen får du det här felet:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:Användarvarning:Modulen _mysql har redan importerats från /Library/Python/2.5 site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, men XXXX/MySQL-python-1.2.3c1 läggs till i sys.path

Det här är ganska lätt att Google, men för att spara dig besväret hamnar du här (eller kanske inte... inte en särskilt framtidssäker URL) och ta reda på att du måste cd .. ur byggkatalogen och felet bör försvinna.

Som jag skrev överst skulle jag gärna se det här svaret generaliserat, eftersom det finns många andra specifika erfarenheter av detta hemska problem där ute. Redigera bort, eller ge ditt eget, bättre svar.



  1. Använd MySQL relationsdatabaser på Fedora 14

  2. Ta bort MySQL 5.7 helt

  3. Postgres-fråga för att kontrollera en sträng är ett nummer

  4. Blockchain:Vad är det, hur det fungerar och vad det betyder för Big Data