Aktualizace pro uživatele Python3: Můžete jednoduše použít conda install mysqlclient
k instalaci knihoven potřebných k používání MySQLdb tak, jak v současnosti existuje. Následující otázka SO byla užitečným vodítkem:Python 3 ImportError:Žádný modul s názvem 'ConfigParser'
. Instalace mysqlclient nainstaluje mysqlclient, mysql-connector a llvmdev (přinejmenším na můj počítač nainstaloval tyto 3 knihovny).
Zde je příběh mých nesourodých zkušeností s tímto problémem. Rád bych to viděl upravený nebo zobecněný, pokud s tím máte lepší zkušenosti... aplikujte trochu toho TAK kouzla.
Poznámka:Komentáře v dalším odstavci se vztahují na Snow Leopard, ale ne na Lion, který zřejmě vyžaduje 64bitové MySQL
Za prvé, autor (stále?) MySQLdb říká zde že jedním z nejzhoubnějších problémů je, že OS X je nainstalovaný s 32bitovou verzí Pythonu, ale většina průměrných joeů (včetně mě) pravděpodobně skočí na instalaci 64bitové verze MySQL. Špatný krok... odeberte 64bitovou verzi, pokud jste ji nainstalovali (pokyny k této nešikovné úloze jsou k dispozici na SO zde ), poté si stáhněte a nainstalujte 32bitovou verzi (balíček zde )
Existuje mnoho podrobných kroků, jak sestavit a nainstalovat knihovny MySQLdb. Často mají jemné rozdíly. Toto se mi zdálo nejoblíbenější a poskytlo funkční řešení. Zreprodukoval jsem to s několika úpravami níže
Krok 0: Než začnu, předpokládám, že máte MySQL, Python a GCC nainstalovaný na počítači Mac.
Krok 1: Stáhněte si nejnovější adaptér MySQL pro Python ze SourceForge.
Krok 2: Rozbalte svůj stažený balíček:
tar xzvf MySQL-python-1.2.2.tar.gz
Krok 3: Uvnitř složky vyčistěte balíček:
sudo python setup.py clean
NĚKOLIK KROKŮ NAVÍC (z tohoto komentáře )
Krok 3b: Odstraňte vše z vašeho adresáře MySQL-python-1.2.2/build/* – nevěřte „python setup.py clean“, že to udělá za vás
Krok 3c: Odeberte vejce pod Users/$USER/.python-eggs
Krok 4: Původně vyžadovala úprava _mysql.c, ale nyní JIŽ NENÍ NUTNÁ. Zdá se, že komunita MySQLdb již tuto chybu opravila.
Krok 5: Vytvořte symbolický odkaz pod lib, který bude odkazovat na podadresář s názvem mysql. Toto je místo, kde hledá během kompilace.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Krok 6: Upravte soubor setup_posix.py a změňte následující
mysql_config.path ="mysql_config"
do
mysql_config.path ="/usr/local/mysql/bin/mysql_config"
Krok 7: Ve stejném adresáři znovu sestavte svůj balíček (ignorujte varování, která jsou s ním dodávána)
sudo python setup.py build
Krok 8: Nainstalujte balíček a máte hotovo.
sudo python setup.py install
Krok 9: Vyzkoušejte, jestli to funguje. Funguje to, pokud můžete importovat MySQLdb.
python
>>> import MySQLdb
Krok 10: Pokud se při pokusu o import zobrazí chyba se stížností, že Library not loaded: libmysqlclient.18.dylib
končící na:Reason: image not found
musíte vytvořit jeden další symbolický odkaz, který je:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Poté byste měli být schopni import MySQLdb
bez jakýchkoli chyb.
Posledním zádrhelem však je, že pokud spustíte Python z adresáře sestavení, zobrazí se tato chyba:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:UserWarning:Modul _mysql byl již importován z /Library/Python/2.5/ site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, ale XXXX/MySQL-python-1.2.3c1 se přidává do sys.path
To je pro Google docela snadné, ale abyste si ušetřili potíže, skončíte zde
(nebo možná ne... není to nijak zvlášť odolná adresa URL) a zjistěte, že musíte cd ..
out of build directory a chyba by měla zmizet.
Jak jsem napsal nahoře, rád bych viděl tuto odpověď zobecněnou, protože existuje mnoho dalších konkrétních zkušeností s tímto hrozným problémem. Upravte nebo poskytněte vlastní, lepší odpověď.