Aktualizacja dla tych, którzy używają Python3:
Możesz po prostu użyć conda install mysqlclient
do zainstalowania bibliotek wymaganych do korzystania z MySQLdb, tak jak obecnie. Pomocną wskazówką było następujące pytanie SO: Python 3 ImportError: Brak modułu o nazwie „ConfigParser” . Zainstalowanie mysqlclient spowoduje zainstalowanie mysqlclient, mysql-connector i llvmdev (przynajmniej zainstalował te 3 biblioteki na moim komputerze).
Oto opowieść o moim chaotycznym doświadczeniu z tym problemem. Chciałbym, aby to zostało zredagowane lub uogólnione, jeśli masz lepsze doświadczenie w tym problemie ... zastosuj trochę tej TAK magii.
Uwaga: Komentarze w następnym akapicie dotyczą systemu Snow Leopard, ale nie Lion, który wydaje się wymagać 64-bitowego MySQL
Po pierwsze, autor (wciąż?) MySQLdb mówi tutaj, że jednym z najbardziej zgubnych problemów jest to, że OS X jest instalowany z 32-bitową wersją Pythona, ale większość przeciętnych joesów (łącznie ze mną) prawdopodobnie przeskakuje, aby zainstalować wersję 64-bitową MySQL. Zły ruch ... usuń wersję 64-bitową, jeśli ją zainstalowałeś (instrukcje dotyczące tego skrzypiącego zadania są dostępne na SO tutaj ), a następnie pobierz i zainstaluj wersję 32-bitową (pakiet tutaj )
Istnieje wiele instrukcji krok po kroku, jak zbudować i zainstalować biblioteki MySQLdb. Często mają subtelne różnice. To mi się to najbardziej popularne i zapewniło działające rozwiązanie. Powtórzyłem go z kilkoma zmianami poniżej
Krok 0:
Zanim zacznę, zakładam, że masz zainstalowane MySQL, Python i GCC na komputerze Mac.
Krok 1:
Pobierz najnowszy adapter MySQL dla Pythona z SourceForge.
Krok 2:
Rozpakuj pobrany pakiet:
tar xzvf MySQL-python-1.2.2.tar.gz
Krok 3:
Wewnątrz folderu wyczyść pakiet:
sudo python setup.py clean
PARA DODATKOWYCH KROKÓW (z tego komentarza )
Krok 3b:
Usuń wszystko z katalogu MySQL-python-1.2.2 / build / * - nie ufaj "python setup.py clean", aby zrobić to za Ciebie
Krok 3c:
Usuń jajko w sekcji Users / $ USER / .python-eggs
Krok 4:
Początkowo wymagana edycja pliku _mysql.c, ale teraz NIE JEST JUŻ KONIECZNA. Wygląda na to, że społeczność MySQLdb naprawiła teraz ten błąd.
Krok 5:
Utwórz łącze symboliczne w bibliotece lib, aby wskazywało podkatalog o nazwie mysql. Właśnie tego szuka podczas kompilacji.
sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql
Krok 6:
Edytuj plik setup_posix.py i zmień następujące
mysql_config.path = "mysql_config"
do
mysql_config.path = "/ usr / local / mysql / bin / mysql_config"
Krok 7:
W tym samym katalogu odbuduj pakiet (zignoruj ostrzeżenia, które się z nim wiążą)
sudo python setup.py build
Krok 8:
Zainstaluj pakiet i gotowe.
sudo python setup.py install
Krok 9:
Sprawdź, czy działa. Działa, jeśli możesz zaimportować MySQLdb.
python
>>> import MySQLdb
Krok 10:
Jeśli podczas próby importu pojawi się błąd informujący, że Library not loaded: libmysqlclient.18.dylib
kończy się na: Reason: image not found
musisz utworzyć jedno dodatkowe łącze symboliczne, które jest:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Powinieneś wtedy być w stanie import MySQLdb
bez błędów.
Ostatnim problemem jest to, że jeśli uruchomisz Pythona z katalogu kompilacji, otrzymasz ten błąd:
/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3: UserWarning: Moduł _mysql został już zaimportowany 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 jest dodawany do sys.path
To jest dość łatwe dla Google, ale aby zaoszczędzić ci kłopotów, skończysz tutaj (a może nie ... niezbyt przyszłościowy adres URL) i zorientujesz się, że musiszcd ..
wyjść z katalogu kompilacji, a błąd powinien zniknąć.
Jak napisałem na górze, chciałbym, aby ta odpowiedź była uogólniona, ponieważ istnieje wiele innych konkretnych doświadczeń związanych z tym okropnym problemem. Edytuj dalej lub podaj własną, lepszą odpowiedź.
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
. Po uruchomieniu tego zaimportowano zgodnie z oczekiwaniami ... w końcu. Wheewwww. Tylko fyi dla tych w podobnej sytuacji.Szybki i łatwy sposób na Mac OS X 10.8 (Mountain Lion), 10.9 (Mavericks), 10.10 (Yosemite) i 10.11 (El Capitan):
Zakładam, że masz zainstalowany XCode, jego narzędzia wiersza poleceń , Python i MySQL.
Zainstaluj PIP:
Edytuj ~ / .profile: (może nie być konieczne w systemie Mac OS X 10.10)
Skopiuj i wklej następujące dwie linie
Zapisz i wyjdź. Afterwords wykonaj następujące polecenie:
Zainstaluj MySQLdb
Aby sprawdzić, czy wszystko działa dobrze, po prostu spróbuj
Na mnie zadziałało jak urok. Mam nadzieję, że to pomoże.
Jeśli napotkasz błąd dotyczący brakującej biblioteki: Biblioteka nie została załadowana: libmysqlclient.18.dylib , musisz połączyć ją symbolicznie w następujący
/usr/lib
sposób:źródło
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
polecenie od dołu.export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/
brew install mysql
, nie musiałem przechodzić przez drugi krok.Zainstaluj mysql i python przez Macports Portery wykonali całą trudną pracę.
powinieneś zainstalować to, czego potrzebujesz. (zobacz przepełnienie stosu dla komentarzy dotyczących serwera mysql )
Jeśli potrzebujesz tylko połączyć się z mysql i nie uruchomić serwera, wystarczy pierwsza linia.
Macports teraz (początek 2013 r.) Zapewni binarne pliki do pobrania dla typowych kombinacji systemu operacyjnego i architektury wykonywalnej, dla innych (i jeśli o to poprosisz) będzie budować ze źródła.
Ogólnie rzecz biorąc, macports (lub fink) pomaga, gdy istnieją złożone biblioteki itp., Które należy zainstalować.
Tylko kod Pythona i jeśli proste zależności w C można skonfigurować za pomocą setuptools itp., Ale zaczyna się robić skomplikowane, jeśli połączysz te dwa.
źródło
Zainstaluj pip:
Zainstaluj napar:
Zainstaluj mysql:
Zainstaluj MySQLdb
Jeśli masz problemy z kompilacją, spróbuj edytować plik ~ / .profile, jak w jednej z odpowiedzi tutaj.
źródło
pip install mysqlclient
zamiast tego. Pracuje!Oto kolejny krok, który musiałem przejść po otrzymaniu błędu po wykonaniu kroku 9:
Odniesienie: Dzięki! http://ageekstory.blogspot.com/2011_04_01_archive.html
źródło
Jak stwierdzono na temat instalacji MySQL-python na komputerze Mac :
Następnie przetestuj:
źródło
Po prostu miałem ten problem (ponownie!) Po otrzymaniu nowego pudełka Lion.
Najlepsze rozwiązanie, jakie znalazłem (nadal nie w 100% optymalne, ale działa):
upewnij się, że masz 64-bitowy Python. Jak sprawdzić, czy biblioteka jest 32-bitowa / 64-bitowa zbudowana w systemie Mac OS X?
zainstaluj easy_install, jeśli go nie masz. http://packages.python.org/distribute/easy_install.html
zainstaluj GCC, jeśli go nie masz.
Państwo może zdobyć, pobierając XCode / Dev Tools od Apple - to duży plik do pobrania -
... ale zamiast tego polecam ten github, który ma to, czego potrzebujesz (i nie ma XCode): https://github.com/kennethreitz/osx-gcc-installer
Pobrałem ich wstępnie skompilowany plik PKG dla lwa, https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg
upewnij się, że pobrałeś 64-bitową wersję społeczności MYSQL. (Instalacja DMG to łatwa droga) http://dev.mysql.com/downloads/mysql/
Ustaw ścieżki w następujący sposób:
export PATH = $ PATH: / usr / local / mysql-XXXX
eksportuj DYLD_LIBRARY_PATH = / usr / local / mysql / lib /
eksportuj ARCHFLAGS = '- arch x86_64'
UWAGA, ŻE:
Zainstaluj bestię!
easy_install MySQL-python
OSTATNI KROK:
Trwale dodaj plik DYLD_LIBRARY_PATH!
Możesz dodać go do swojego bash_profile lub podobnego. To był dla mnie brakujący krok, bez którego mój system nadal nalegał na różne błędy znajdowania _mysql.so i tak dalej.
eksportuj DYLD_LIBRARY_PATH = / usr / local / mysql / lib /
@ richard-boardman, właśnie zauważyłem twoje rozwiązanie z miękkim łączem, które może w efekcie robić to samo, co moje rozwiązanie PATH ... ludzie, cokolwiek działa najlepiej dla ciebie.
Najlepsze źródło: http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/
źródło
Możesz spróbować użyć czystego Pythona
pymysql
:(Lub użyj,
pip
jeśli masz ją zainstalowaną). Następnie dodaj to przed sobąimport MySQLdb
w kodzie:źródło
Lub po prostu spróbuj:
Jeśli daje błąd jak poniżej:
, a następnie uruchom to
źródło
Jeśli używasz 64-bitowego MySQL, użycie ARCHFLAGS do określenia architektury procesora podczas budowania bibliotek mysql-python załatwi sprawę:
źródło
powinien rozwiązać problem, ponieważ system nie może znaleźć pliku mysql_config.
źródło
Na macos Sierra to działa dla mnie, gdzie python jest zarządzany przez anacondę:
anaconda search -t conda mysql-python
anaconda show CEFCA/mysql-python
conda install --channel https://conda.anaconda.org/CEFCA mysql-python
Do użycia z SQLAlchemy:
źródło
Ta odpowiedź to aktualizacja, około listopada 2019 r. Żadna z popularnych instalacji pip nie zapewni działającej konfiguracji w systemie MacOS 10.13 (i prawdopodobnie także innych wersjach). Oto prosty sposób, w jaki wszystko działa:
Jeśli potrzebujesz pomocy przy instalacji brew, odwiedź tę stronę: https://brew.sh/
źródło
Natknąłem się na ten problem i stwierdziłem, że
mysqlclient
musi wiedzieć, gdzie znaleźć openssl, a OSX domyślnie to ukrywa.Zlokalizuj openssl za pomocą
brew info openssl
, a następnie dodaj ścieżkę do swojegoopenssl
bin do swojej PATH:Zalecam dodanie tego do twojego .zshrc lub .bashrc, żebyś nie musiał się tym martwić w przyszłości. Następnie, po wyeksportowaniu tej zmiennej (co może spowodować zamknięcie i ponowne otwarcie sesji basha), dodaj jeszcze dwie zmienne env:
Na koniec uruchom:
i powinien zainstalować się dobrze.
Źródło: https://medium.com/@shandou/pipenv-install-mysqlclient-on-macosx-7c253b0112f2
źródło