Po pierwsze, tak, już to widziałem:
Problem
Próbuję użyć Django w projekcie Google App Engine. Jednak nie udało mi się rozpocząć, ponieważ serwer nie uruchamia się poprawnie z powodu:
ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
Zrobiłem kilka badań i wszystko wskazywało na konieczność zainstalowania Mysql-python, ponieważ najwyraźniej nie ma go w moim systemie. Właściwie próbowałem go odinstalować i otrzymałem to:
Cannot uninstall requirement mysql-python, not installed
Ilekroć faktycznie próbuję zainstalować przez:
sudo pip install MySQL-python
Pojawia się błąd informujący:
raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found
Próbowałem już biegać:
export PATH=$PATH:/usr/local/mysql/bin
ale to nie pomogło, ponieważ ponownie uruchomiłem polecenie instalacji i nadal się nie udało.
Jakieś pomysły?
Pamiętaj, że nie jestem w virtualenv.
EnvironmentError
i wydrukować bardziej przydatne informacje o debugowaniu, takie jakos.getcwd()
. możesz także dodaćpdb.set_trace()
i wymyślić rzeczy.Odpowiedzi:
Ok, cóż, przede wszystkim pozwól mi sprawdzić, czy jestem na tej samej stronie co Ty:
brew install mysql
export PATH=$PATH:/usr/local/mysql/bin
pip install MySQL-Python
(lubpip3 install mysqlclient
jeśli używasz Pythona 3)Jeśli wykonałeś wszystkie te kroki w tej samej kolejności i nadal masz błąd, czytaj dalej do końca, jeśli jednak nie wykonałeś tych dokładnych kroków, spróbuj, wykonując je od samego początku.
Więc wykonałeś kroki i nadal pojawia się błąd. Cóż, jest kilka rzeczy, które możesz wypróbować:
Spróbuj uciec
which mysql_config
przed bashem. Prawdopodobnie nie zostanie znaleziony. Dlatego kompilacja też go nie znajduje. Spróbuj pobieclocate mysql_config
i zobacz, czy coś wróci. Ścieżka do tego pliku binarnego musi znajdować się albo w zmiennej środowiskowej $ PATH twojej powłoki, albo musi być jawnie w pliku setup.py modułu, zakładając, że szuka w jakimś określonym miejscu tego pliku.Zamiast używać MySQL-Python, spróbuj użyć 'mysql-connector-python', można go zainstalować za pomocą
pip install mysql-connector-python
. Więcej informacji na ten temat można znaleźć tutaj i tutaj .Znajdź ręcznie lokalizację „mysql / bin”, „mysql_config” i „MySQL-Python” i dodaj je wszystkie do zmiennej środowiskowej $ PATH.
Jeżeli wszystkie powyższe kroki zawiodą, to można spróbować zainstalować „mysql” przy użyciu MacPorts, w takim przypadku plik „mysql_config” będzie rzeczywiście nazwie „mysql_config5”, a w tym przypadku trzeba by to zrobić po zainstalowaniu:
export PATH=$PATH:/opt/local/lib/mysql5/bin
. Więcej szczegółów znajdziesz tutaj .Uwaga 1: Widziałem, jak niektórzy ludzie mówili, że instalacja
python-dev
ilibmysqlclient-dev
również pomogła, jednak nie wiem, czy te pakiety są dostępne w systemie Mac OS.Uwaga 2: Upewnij się również, że wykonujesz polecenia jako root.
Odpowiedzi otrzymałem (poza mózgiem) z tych miejsc (może mógłbyś na nie spojrzeć, żeby zobaczyć, czy to pomoże): 1 , 2 , 3 , 4 .
Miałem nadzieję, że pomogłem i byłbym szczęśliwy, wiedząc, czy coś z tego zadziałało, czy nie. Powodzenia.
źródło
brew install mysql
naprawiło to. Ponadto to poleceniewhich mysql-config
nie zadziałało, ale zadziałałowhich mysql_config
..bash_profile
pliku:export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
export PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
Debugowałem ten problem od zawsze - 3 godziny 17 minut. Szczególnie denerwowało mnie to, że miałem już zainstalowany sql w moim systemie podczas wcześniejszych prac unii, ale pip / pip3 go nie rozpoznawał. Te wątki powyżej i wiele innych, które przeszukałem w Internecie, były pomocne w wyjaśnieniu problemu, ale tak naprawdę nie rozwiązały problemu.
ODPOWIEDŹ
Pip szuka plików binarnych mysql w katalogu Homebrew, który znajduje się w stosunku do Macintosh HD @
więc stwierdziłem, że wymaga to wprowadzenia kilku zmian
Krok 1: Pobierz MySql, jeśli jeszcze tego nie zrobiłeś https://dev.mysql.com/downloads/
Krok 2: Zlokalizuj go względem Macintosh HD i cd
Krok 3: Otwórz terminal i użyj wybranego edytora tekstu - sam jestem neovimem, więc napisałem (nie przychodzi automatycznie z komputerem Mac ... inna historia na inny dzień)
Krok 4: Zobaczysz około linii 112
Zmień na
* zauważysz, że ten plik ma dostęp tylko do odczytu, więc jeśli używasz vim lub neovim
Krok 5: Przejdź do katalogu domowego i edytuj plik .bash_profile
Następnie
i dodaj
do pliku, a następnie zapisz
Krok 6: w stosunku do Macintosh HD zlokalizuj ścieżki i dodaj do nich
następnie
i dodaj
* ponownie zauważysz, że ten plik ma dostęp tylko do odczytu, więc jeśli używasz vim lub neovim
następnie
następnie odśwież terminal ze zmianami, uruchamiając
Wreszcie
I Viola. Pamiętaj, że to klimat.
źródło
libs
wnętrzemysql_config
było już zgodne z opisem w sekcji „Zmień na”. Jednak dodanie PATH doprivate/etc
pomogło w umożliwieniu globalnej instalacjimysqlclient
tego wcześniej niepowodzeniem.Jeśli nie chcesz instalować pełnego mysql, możemy to naprawić, po prostu instalując mysqlclient.Po
brew install mysqlclient
zakończeniu cmd poprosi o dodanie poniższego wiersza do~/.bash_profile
:echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile
Zamknij terminal i uruchom nowy terminal i kontynuuj
pip install mysqlclient
źródło
Używam Pythona 3.6 na MacOS Catalina. Mój problem polegał na tym, że próbowałem zainstalować
mysqlclient==1.4.2.post1
i ciągle wyrzuca błąd nie znaleziono mysql_config.Oto kroki, które podjąłem, aby rozwiązać problem.
brew unlink mysql
) -brew install mysql-connector-c
brew info openssl
- to da ci więcej informacji o tym, co należy zrobić, aby umieścić openssl w PATHecho 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
źródło
Dzieje się tak również, gdy instalowałem mysqlclient,
Jak powiedział user3429036,
źródło
Ta odpowiedź jest dla użytkowników MacOS, którzy nie instalowali z,
brew
ale raczej od oficjalnego.dmg/.pkg
. Ten instalator nie edytuje twojegoPATH
, co powoduje, że rzeczy wyskakują z pudełka:mysql
,mysqladmin
,mysql_config
itd nie można znaleźć, w wyniku czego:mysqlclient
To, co musisz zrobić, to dołączyć
bin
folder MySQL (zwykle/usr/local/mysql/bin
w twoimPATH
, dodając ten wiersz w~/.bash_profile
pliku:export PATH="/usr/local/mysql/bin/:$PATH"
Następnie należy załadować ponownie, aby
~/.bash_profile
zmiana zaczęła obowiązywać w bieżącej sesji terminala:source ~/.bash_profile
mysqlclient
Jednak przed instalacją musisz zaakceptować licencję XcodeBuild:sudo xcodebuild -license
Postępuj zgodnie z ich wskazówkami, aby wylogować swoją rodzinę, po czym powinieneś móc
mysqlclient
bez problemu zainstalować :pip install mysqlclient
Po zainstalowaniu musisz zrobić jeszcze jedną rzecz, aby naprawić błąd środowiska wykonawczego dostarczany z MySQL ( nie znaleziono biblioteki dynamicznej
libmysqlclient.dylib
), dodając ten wiersz do ścieżki bibliotek dynamicznych systemu:export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH
źródło
sudo lsof -i :3306
aby zobaczyć PID aktywnego procesu MySQL, a następnie uruchamiającsudo -P <pid>
na nim, aby zobaczyć otwarte pliki. To wymyśliłem, do/usr/local/mysql-8.0.18-macos10.14-x86_64/bin
którego dodałem$PATH
i voila !Jeśli zainstalowałeś mysql za pomocą Homebrew , określając wersję, wtedy mysql_config będzie obecny tutaj. - /usr/local/Cellar/[email protected]/5.6.47/bin
ścieżkę do bin sql można znaleźć za pomocą polecenia ls w katalogu / usr / local /
Dodaj ścieżkę do profilu basha w ten sposób.
źródło
Problem w moim przypadku polegał na tym, że uruchamiałem polecenie w środowisku wirtualnym Pythona i nie miało ono ścieżki do / usr / local / mysql / bin, chociaż umieściłem ją w pliku .bash_profile. Samo wyeksportowanie ścieżki w wirtualnym środowisku działało dla mnie.
Dla twojej informacji sql_config znajduje się w katalogu bin.
źródło
Instalacja brew lub apt-get również nie jest dla mnie łatwa, więc pobrałem mysql przez: https://dev.mysql.com/downloads/connector/python/ , zainstalowałem go. Więc mogę znaleźć mysql_config int w tym katalogu: / usr / local / mysql / bin
następny krok to:
źródło