Mac OS X - EnvironmentError: mysql_config not found

121

Po pierwsze, tak, już to widziałem:

pip install mysql-python kończy się niepowodzeniem i pojawia się błąd EnvironmentError: nie znaleziono mysql_config

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.

daniel_c05
źródło
Zawsze możesz przejść do pliku podnoszącego EnvironmentErrori wydrukować bardziej przydatne informacje o debugowaniu, takie jak os.getcwd(). możesz także dodać pdb.set_trace()i wymyślić rzeczy.
ealfonso

Odpowiedzi:

340

Ok, cóż, przede wszystkim pozwól mi sprawdzić, czy jestem na tej samej stronie co Ty:

  • Zainstalowałeś Pythona
  • Zrobiłeś brew install mysql
  • Zrobiłeś export PATH=$PATH:/usr/local/mysql/bin
  • I wreszcie zrobiłeś pip install MySQL-Python(lub pip3 install mysqlclientjeś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ć:

  1. Spróbuj uciec which mysql_configprzed bashem. Prawdopodobnie nie zostanie znaleziony. Dlatego kompilacja też go nie znajduje. Spróbuj pobiec locate mysql_configi 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.

  2. 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 .

  3. Znajdź ręcznie lokalizację „mysql / bin”, „mysql_config” i „MySQL-Python” i dodaj je wszystkie do zmiennej środowiskowej $ PATH.

  4. 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-devi libmysqlclient-devró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.

Vadorequest
źródło
2
Świetne wyjaśnienie, FWIW na Linuksie, instalacja python-dev i libmysqlclient-dev jest zwykle jedyną rzeczą, którą trzeba zrobić, aby to działało, ale na OSX wszystko, co musiałem zrobić, to zaktualizować moją wannę. Wierzę , że na Linuksie możesz zainstalować mysql bez pobierania plików Python dla mysql-python, jeśli nie zainstalujesz wskazanych bibliotek programistycznych. (Popełniłem ten błąd tak wiele razy, lol)
Iain Duncan
1
Po aktualizacji do Yosemite narzeka teraz również na brak pliku „stdio.h”. Możesz to naprawić, przechodząc tutaj: stackoverflow.com/questions/19580758/…
Mihai Oprea
4
Uruchomienie brew install mysqlnaprawiło to. Ponadto to polecenie which mysql-confignie zadziałało, ale zadziałało which mysql_config.
Czad
1
Musiałem również dodać tę linię do mojego .bash_profilepliku:export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
JeffThompson,
2
Musiałem wskazać na instalację browarówexport PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
Climbs_lika_Spyder
6

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 @

/usr/local/Cellar/

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

/usr/local/mysql/bin

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ń)

nvim mysql_config

Krok 4: Zobaczysz około linii 112

# Create options 
libs="-L$pkglibdir"
libs="$libs -l "

Zmień na

# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"

* zauważysz, że ten plik ma dostęp tylko do odczytu, więc jeśli używasz vim lub neovim

:w !sudo tee %

Krok 5: Przejdź do katalogu domowego i edytuj plik .bash_profile

cd ~

Następnie

nvim .bash_profile

i dodaj

export PATH="/usr/local/mysql/bin:$PATH"

do pliku, a następnie zapisz

Krok 6: w stosunku do Macintosh HD zlokalizuj ścieżki i dodaj do nich

cd /private/etc/

następnie

nvim paths

i dodaj

/usr/local/mysql/bin

* ponownie zauważysz, że ten plik ma dostęp tylko do odczytu, więc jeśli używasz vim lub neovim

:w !sudo tee % 

następnie

cd ~

następnie odśwież terminal ze zmianami, uruchamiając

source .bash_profile

Wreszcie

pip3 install mysqlclient

I Viola. Pamiętaj, że to klimat.

Trevor James Oluotch
źródło
Moje libswnętrze mysql_configbyło już zgodne z opisem w sekcji „Zmień na”. Jednak dodanie PATH do private/etcpomogło w umożliwieniu globalnej instalacji mysqlclienttego wcześniej niepowodzeniem.
martin-martin
5

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

Bieg
źródło
3

Używam Pythona 3.6 na MacOS Catalina. Mój problem polegał na tym, że próbowałem zainstalować mysqlclient==1.4.2.post1i ciągle wyrzuca błąd nie znaleziono mysql_config.

Oto kroki, które podjąłem, aby rozwiązać problem.

  1. Zainstaluj mysql-connector-c za pomocą brew (jeśli masz już mysql, zainstaluj najpierw odłącz brew unlink mysql) -brew install mysql-connector-c
  2. Otwórz mysql_config i edytuj plik wokół linii 112
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - to da ci więcej informacji o tym, co należy zrobić, aby umieścić openssl w PATH
  2. w odniesieniu do kroku 3, musisz to zrobić, aby umieścić openssl w PATH - echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. dla kompilatorów do znalezienia openssl - export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. dla kompilatorów do znalezienia openssl - export CPPFLAGS="-I/usr/local/opt/openssl/include"
azmirfakkri
źródło
Dziękuję Ci! Próbowałem tylu rzeczy i twoja metoda zadziałała na mnie.
Yagimutsu
2

Dzieje się tak również, gdy instalowałem mysqlclient,

$ pip install mysqlclient

Jak powiedział user3429036,

$ brew install mysql
AndreL
źródło
1

Ta odpowiedź jest dla użytkowników MacOS, którzy nie instalowali z, brewale raczej od oficjalnego .dmg/.pkg. Ten instalator nie edytuje twojego PATH, co powoduje, że rzeczy wyskakują z pudełka:

  1. Wszystkie polecenia MySQL podoba mysql, mysqladmin, mysql_configitd nie można znaleźć, w wyniku czego:
  2. „Preferencje MySQL Okienko” nie pojawia się w oknie Preferencje systemowe, a
  3. nie możesz zainstalować żadnego API, które komunikuje się z MySQL, w tym mysqlclient

To, co musisz zrobić, to dołączyć binfolder MySQL (zwykle /usr/local/mysql/binw twoim PATH, dodając ten wiersz w ~/.bash_profilepliku:

export PATH="/usr/local/mysql/bin/:$PATH"

Następnie należy załadować ponownie, aby ~/.bash_profilezmiana zaczęła obowiązywać w bieżącej sesji terminala:

source ~/.bash_profile

mysqlclientJednak 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 mysqlclientbez problemu zainstalować :

pip install mysqlclient

Po zainstalowaniu musisz zrobić jeszcze jedną rzecz, aby naprawić błąd środowiska wykonawczego dostarczany z MySQL ( nie znaleziono biblioteki dynamicznejlibmysqlclient.dylib ), dodając ten wiersz do ścieżki bibliotek dynamicznych systemu:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/:$DYLD_LIBRARY_PATH

Zhanwen Chen
źródło
Widziałem twoją odpowiedź po znalezieniu plików binarnych na dysku, uruchamiając, sudo lsof -i :3306aby zobaczyć PID aktywnego procesu MySQL, a następnie uruchamiając sudo -P <pid>na nim, aby zobaczyć otwarte pliki. To wymyśliłem, do /usr/local/mysql-8.0.18-macos10.14-x86_64/binktórego dodałem $PATHi voila !
Neil C. Obremski
0

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 /

/usr/local/Cellar/mysql@5.6/5.6.47/bin

Dodaj ścieżkę do profilu basha w ten sposób.

nano ~/.bash_profile

export PATH="/usr/local/Cellar/[email protected]/5.6.47/bin:$PATH"
mohammed_ayaz
źródło
0

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.

ac_baz
źródło
-1

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:

  1. export PATH = $ PATH: / usr / local / mysql / bin
  2. pip zainstaluj MySQL-python == 1.2.5
J.Mark
źródło