mysql_config nie został znaleziony podczas instalacji interfejsu python mysqldb

478

Próbuję uruchomić skrypt w języku Python, który będzie działał na serwerze Linux, z którym jestem połączony za pośrednictwem ssh. Skrypt używa mysqldb. Mam wszystkie inne składniki, których potrzebuję, ale kiedy próbuję zainstalować mySQLdb przez setuptools, takie jak :,

python setup.py install

Otrzymuję następujący raport o błędzie związany z mysql_configpoleceniem.

sh: mysql_config: command not found
Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    metadata, options = get_config()
  File "/usr/lib/python2.5/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config
    libs = mysql_config("libs_r")
  File "/usr/lib/python2.5/MySQL-python-1.2.3/setup_posix.py", line 24, in mysql_config
    raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

Czy ktoś napotkał ten błąd, a jeśli tak, to jak go rozwiązać / co mogę zrobić, aby pomyślnie zainstalować mysqldb?

użytkownik904542
źródło
1
Cześć @ user904542 - Zredagowałem twoje pytanie, aby, mam nadzieję, uczynić je nieco bardziej zwięzłym i uzyskać kilka odpowiedzi :) Jeśli ci się nie podoba lub chcesz podać dodatkowe szczegóły, pod Twoim pytaniem znajduje się link edycyjny można użyć do przywrócenia oryginalnego lub dodania do wprowadzonych zmian.
3
Natrafiłem na dokładnie ten sam problem, ponieważ zainstalowałem mysql ze źródła. jeśli to zrobisz, po prostu uruchom coś takiego, aby udostępnić mysql_config: sudo ln -s / usr / local / mysql / bin / mysql_config / usr / bin / mysql_config lub dodaj / usr / local / mysql / bin / do swojej ścieżki.
Thi Duong Nguyen,
Jeśli masz już zainstalowany mysql, powyższy komentarz Thi Duong Nguyen rozwiązuje problem, tworząc dowiązanie symboliczne do pliku mysql_config w katalogu / usr / bin, który znajduje się na ścieżce, którą będzie wyszukiwał Python.
Alex Boschmans,
2
po prostu zrób to ------------- apt-get install python-mysqldb
shadow0359
@AlexBoschmans symlinking /usr/binjest niewłaściwy, usr/local/my...widać odpowiedź Thi.
Timo

Odpowiedzi:

701

mySQLdb to interfejs Pythona dla mysql, ale nie jest to sam mysql. I najwyraźniej mySQLdb potrzebuje polecenia „mysql_config”, więc musisz go najpierw zainstalować.

Czy możesz potwierdzić, że sam zainstalowałeś mysql, uruchamiając „mysql” z powłoki? Powinno to dać odpowiedź inną niż „mysql: polecenie nie znaleziono”.

Jakiej dystrybucji linux używasz? MySQL jest wstępnie zapakowany dla większości dystrybucji Linuksa. Na przykład dla debian / ubuntu instalacja mysql jest tak łatwa jak

sudo apt-get install mysql-server

mysql-config znajduje się w innym pakiecie, z którego można zainstalować (ponownie przy założeniu debian / ubuntu):

sudo apt-get install libmysqlclient-dev

jeśli używasz mariadb, upuść zamiast mysql, a następnie uruchom

sudo apt-get install libmariadbclient-dev

Odniesienie: https://github.com/JudgeGirl/Judge-sender/issues/4#issuecomment-186542797

amarillion
źródło
1
Odczytywanie list pakietów ... Gotowe Budowanie drzewa zależności Odczytywanie informacji o stanie ... Gotowe Uwaga, wybierając libmysqlclient15-dev zamiast libmysqlclient-dev Niektórych pakietów nie można zainstalować. Może to oznaczać, że zażądałeś niemożliwej sytuacji lub jeśli używasz niestabilnej dystrybucji, że niektóre wymagane pakiety nie zostały jeszcze utworzone lub zostały przeniesione z Przychodzących. Następujące informacje mogą pomóc w rozwiązaniu tej sytuacji: Następujące pakiety mają niezaspokojone zależności: libmysqlclient15-dev: Zależy: zlib1g-dev, ale nie zostanie on zainstalowany E: Uszkodzone pakiety
użytkownik904542
2
Czy „sudo apt-get install mysql” powinno być „sudo apt-get install mysql-server”?
Kohanz
4
Zauważ, że na Debianie to sudo apt-get install mysql-serverisudo apt-get install mysql-client
Marc Juchli
2
Czy możemy wreszcie przyznać, że „pip” to kolosalna porażka? Takie błędy to taki ból i zdają się występować w większości pakietów. Python bardzo potrzebuje nowego rozwiązania do zarządzania pakietami.
Eddie Sullivan
3
Dla mnie na Debianie był to libmysqlclient-dev. W rzeczywistości zainstalowałem zarówno libmariadbclient-dev libmysqlclient-dev
mirek
187

Instalowałem python-mysqlna Ubuntu 12.04 za pomocą

pip install mysql-python

Najpierw miałem ten sam problem:

Not Found "mysql_config"

To zadziałało dla mnie

$ sudo apt-get install libmysqlclient-dev

Potem miałem ten problem:

...
_mysql.c:29:20: error fatal: Python.h: No existe el archivo o el directorio

compilación terminada.

error: command 'gcc' failed with exit status 1

Potem spróbowałem

apt-get install python-dev

A potem byłem szczęśliwy :)

pip install mysql-python
    Installing collected packages: mysql-python
      Running setup.py install for mysql-python
        building '_mysql' extension
        gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,4,'beta',4) -D__version__=1.2.4b4 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -g
        In file included from _mysql.c:44:0:
        /usr/include/mysql/my_config.h:422:0: aviso: se redefinió "HAVE_WCSCOLL" [activado por defecto]
        /usr/include/python2.7/pyconfig.h:890:0: nota: esta es la ubicación de la definición previa
        gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r -lpthread -lz -lm -lrt -ldl -o build/lib.linux-x86_64-2.7/_mysql.so

Successfully installed mysql-python
Cleaning up...
xtornasol512
źródło
1
Działa również na openSUSE, gdzie „libmysqlclient-dev” staje się „libmysqlclient-devel”. Teraz pakiet pip instaluje się dobrze. Dzięki.
pbarill
Dzięki! Działa również na Ubuntu 14.04.1 LTS
Krasimir
instalacja nagłówków dev Pythona rozwiązała brakujący błąd Python.h. Dzięki.
Natus Drew
3
jeśli używasz python3.x, spróbuj z apt-get install python3-dev.
Legolas Bloom
Nie działało to dla mnie 14.04 - „E: Pakiet„ python-dev ”nie ma kandydata do instalacji”
Rene Wooller
46

(Dotyczy Mac OS X)

Próbowałem wielu rzeczy, ale ten zestaw poleceń w końcu zadziałał dla mnie.

  1. zainstalować mysql
    brew install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. Dodaj folder bin mysql do ŚCIEŻKI
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
  5. mkdir /usr/local/Cellar/lib/
  6. Utwórz dowiązanie symboliczne
    sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib
  7. brew reinstall openssl( źródło )
  8. Na koniec zainstaluj klienta mysql
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient

Aktualizacja: jeśli to nie zadziała, @vinyll sugeruje uruchomienie brew link mysqlprzed krokiem 8.

Pulkit Pahwa
źródło
2
po prostu zastosowałem krok 1-4, a potem zadziałało. dzięki!
kujiy
W kroku 4 użyj, brew info mysqlaby uzyskać rzeczywistą / poprawną ścieżkę do instalacji mysql. Następnie, aby PATHzmiana pozostała niezmienna, wykonaj export PATH..~ w swoim ~ / .bash_profile.
Gino Mempin,
krok 1-4 z brew link --overwrite mysql-connector-cpracami na moim komputerze Mac
Hunger
Wreszcie działa na mojej Catalinie. Użyj określenia open ssl jest bardzo ważne.
Szczęśliwszy
4
Musiałem zrobić brew link mysqlprzed krokiem 8, aby go uruchomić.
Vinyll
37

W Red Hat musiałem to zrobić

sudo yum install mysql-devel gcc gcc-devel python-devel
sudo easy_install mysql-python

Potem zadziałało.

Elliott
źródło
3
Pracowałem dla mnie nad CentOS 7:yum install MySQL-python
hudolejev
2
Jeśli trzeba zainstalować MySQL-pythonjako pakiet Pythona lub korzystania virtualenv, to może pomóc: yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev
2
Jeśli używasz MariaDB na CentOS 7, uruchom sudo yum install mariadb-develnajpierw, a następnie możesz zainstalować mysqlclient przezpip install mysqlclient
Belter
skąd masz gcc-devel rpm?
Fayaz
yum install mysql-develCentos 8
Diego Andrés Díaz Espinoza
33

Poniższe działało dla mnie na Ubuntu 12.04 LTS:

apt-get install libmysqlclient-dev python-dev

Mimo, że zadziałało, nadal wykonałem następujące czynności:

export PATH=$PATH:/usr/local/mysql/bin/
nasowah
źródło
27

Wystąpił ten sam błąd podczas próby instalacji mysql-python.

Tak to naprawiłem.

sudo PATH=/usr/local/mysql/bin/:$PATH pip install mysql-python

Problem polegał na tym, że instalator nie mógł znaleźć mysql_config w domyślnej ścieżce. Teraz może .. i działało ..

 15 warnings generated.
    clang -bundle -undefined dynamic_lookup -Wl,-F. build/temp.macosx-10.8-intel-2.7/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm -lmygcc -o build/lib.macosx-10.8-intel-2.7/_mysql.so -arch x86_64

Successfully installed mysql-python
Cleaning up...

Mam nadzieję że to pomoże.

Dzięki.

Mayank R Jain
źródło
Miałem ten sam problem z instalacją MySQL lokalnie na komputerze Mac z systemem OSX 10.9.4 (Mavericks). To rozwiązanie również działało dla mnie.
Zależny
20

Rozwiązałem ten problem, wykonując następujące czynności:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install
zhaozhi
źródło
1
Podczas uruchamiania> = Debian Stretch upewnij się, że instalujesz default-libmysqlclient-dev, ponieważ zwykły libmysqlclient-devpakiet nie ma kandydata do instalacji.
Bono
19

Może brakować komend (także mysql) mPATH.

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

samwize
źródło
11

Krok 1: - Zainstaluj oba Python3 i Python3-dev

sudo apt-get install python3 python3-dev

Krok 2: - Zainstaluj łącznik Python i Mysql

sudo apt-get install libmysqlclient-dev

krok 3: - Zainstaluj klienta Python MySQL

sudo apt-get install mysqlclient

To rozwiąże twój problem

Znany jako
źródło
Krok 2 naprawił to dla mnie.
saltchicken
To naprawiło mój problem, który mnie zepsuł przez 3 godziny .. Dziękuję bardzo !!!
Yeojin,
10

Jeśli korzystasz z systemu macOS i już zainstalowałeś [email protected] przez brew install:

  1. brew install mysql-connector-c
  2. brew unlink [email protected]
  3. brew link --overwrite --dry-run [email protected] po pierwsze, aby zobaczyć, które dowiązania symboliczne są zastępowane
  4. brew link --overwrite --force [email protected] aby faktycznie zastąpić dowiązania symboliczne związane z mysql [email protected]
  5. pip install mysqlclient
Rizky Luthfianto
źródło
9

Naprawiłem to, instalując libmysqlclient:

sudo apt-get install libmysqlclient16-dev
Thoslin
źródło
9

MySQL-pythonPakiet jest za pomocą mysql_configpolecenia, aby dowiedzieć się o mysqlkonfiguracji na Twoim komputerze. Twój host nie ma mysql_configpolecenia.

Pakiet bibliotek programistycznych MySQL (MySQL-devel-xxx) z dev.mysql.com udostępnia tę komendę i biblioteki wymagane przez pakiet MySQL-python. Te MySQL-develpakiety znajdują się w pliku - obszar serwerów społeczności. Nazwy pakietów bibliotek programistycznych MySQL zaczynają się MySQL-develod wersji MySQL i platformy Linux (w zależności od wersji) (np MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm.)

Pamiętaj, że nie musisz instalować serwera mysql.

John Livingston
źródło
8

Pakiet libmysqlclient-dev jest przestarzały, więc użyj go poniżej, aby go naprawić.

Pakiet libmysqlclient-dev nie jest dostępny, ale odwołuje się do niego inny pakiet. Może to oznaczać, że brakuje pakietu, został on przestarzały lub jest dostępny tylko z innego źródła

sudo apt-get install default-libmysqlclient-dev
Rajathithan Rajasekar
źródło
6

W centos 7 to działa dla mnie:

yum install mariadb-devel
pip install mysqlclient
Rajiv Sharma
źródło
5

Na moim komputerze Fedora 23 musiałem uruchomić następujące:

sudo dnf install mysql-devel
Raptor
źródło
5

W przypadku systemu Alpine Linux:

$ apk add mariadb-dev mariadb-client mariadb-libs

MariaDB to drop-in zamiennik MySQL i stał się nowym standardem od Alpine 3.2. Zobacz https://bugs.alpinelinux.org/issues/4264

aboutaaron
źródło
1
co sprawia, że ​​mój obraz alpejski jest prawie 500 MB, przyjechałem do alpejskiego po mniejszy rozmiar obrazu
ospider
Muszę także zainstalować python3-dev, aby lib mógł budować
ospider
4

Myślę, że następujące wiersze można wykonać na terminalu

 sudo ln -s /usr/local/zend/mysql/bin/mysql_config /usr/sbin/

Ten katalog mysql_config jest przeznaczony dla serwera Zend na MacOSx. Możesz to zrobić dla Linuksa, jak następujące linie

sudo ln -s /usr/local/mysql/bin/mysql_config /usr/sbin/

Jest to domyślny katalog mysql dla systemu Linux.

hkulekci
źródło
4

Miałem te problemy i rozwiązałem, jeśli dodając dowiązanie symboliczne do mysql_config.

Zainstalowałem mysql z homebrew i zobaczyłem to na wyjściu.

Error: The `brew link` step did not complete successfully

W zależności od tego, jak mysqlje dostaniesz , będzie w różnych miejscach. W moim przypadku /usr/local/Cellar/mysql
Kiedy już wiesz, gdzie to jest, powinieneś mieć symboliczny link do tego, gdzie python go szuka. /usr/local/mysql

To zadziałało dla mnie.

ln -s /usr/local/Cellar/mysql/<< VERSION >>/bin/mysql_config   /usr/local/mysql/bin/mysql_config
Schechter
źródło
4

Miałem ten sam problem. Rozwiązałem go, wykonując ten samouczek, aby zainstalować Python z python3-dev na Ubuntu 16.04:

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get install -y python3-pip
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

A teraz możesz skonfigurować środowisko wirtualne:

sudo apt-get install -y python3-venv
pyvenv my_env
source my_env/bin/activate
Mały mózg
źródło
3

Musisz zainstalować pakiet python-dev:

sudo apt-get install python-dev
ebarch
źródło
2

sudo apt-get install python-mysqldb

Python 2.5? Wygląda na to, że używasz bardzo starej wersji Ubuntu Server (Hardy 8.04?) - potwierdź, której wersji systemu Linux używa serwer.

wyszukiwanie w python-mysql w bazie danych pakietów ubuntu

Niektóre dodatkowe informacje:

Z README mysql-python -

Red Hat Linux .............

Python MySQL jest wstępnie pakowany w Red Hat Linux 7.x i nowszych. Dotyczy to Fedory Core i Red Hat Enterprise Linux. Możesz także zbudować własne pakiety RPM, jak opisano powyżej.

Debian GNU / Linux ................

Pakowane jako python-mysqldb_ ::

# apt-get install python-mysqldb

Lub użyj Synaptic.

.. _ python-mysqldb: http://packages.debian.org/python-mysqldb

Ubuntu ......

Taki sam jak w Debianie.

Przypis: Jeśli naprawdę korzystasz z dystrybucji serwerów starszej niż Ubuntu 10.04, oznacza to, że nie masz oficjalnego wsparcia i powinieneś zaktualizować ją wcześniej niż później.

Gary
źródło
Mogę potwierdzić dla Debiana 10 sudo apt-get install python-mysqldb
Vrbanec
To wszystko, co musisz zrobić: dev.mysql.com/doc/connector-python/en/…
Abhinandan Dubey,
2

Ta metoda jest przeznaczona tylko dla tych, którzy wiedzą, że Mysql jest zainstalowany, ale nadal nie można znaleźć mysql_config. Dzieje się tak, jeśli instalacja Pythona nie może znaleźć mysql_config w ścieżce systemowej, co dzieje się głównie, jeśli wykonałeś instalację za pomocą pakietu Mac .dmg lub zainstalowałeś w niestandardowej ścieżce. Najłatwiejszym i udokumentowanym sposobem MySqlDB jest zmiana site.cfg . Znajdź mysql_config, który prawdopodobnie znajduje się w / usr / local / mysql / bin / i zmień zmienną mianowicie mysql_config tak jak poniżej i ponownie uruchom instalację. Nie zapomnij cofnąć komentarza, usuwając „#”

Zmień poniżej linii

„#mysql_config = / usr / local / bin / mysql_config”

do

„mysql_config = / usr / local / mysql / bin / mysql_config”

w zależności od ścieżki w twoim systemie.

Przy okazji użyłem instalacji Pythona po zmianie site.cfg

sudo /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python setup.py install

Ahsan.Amin
źródło
2

Jak dotąd wszystkie rozwiązania (Linux) wymagają sudozainstalowania lub praw root. Oto rozwiązanie, jeśli nie masz praw roota i bez niego sudo. (nie sudo apt install ...):

  1. Pobierz plik .deb libmysqlclient-dev, np. Z tego serwera lustrzanego
  2. Przejdź do pobranego pliku i uruchom dpkg -x libmysqlclient-dev_<version tag>.deb .Spowoduje to wyodrębnienie folderu o nazwie usr.
  3. Symlink ./usr/bin/mysql_configdo miejsca, które znajduje się na twoim $PATH:

    ln -s `pwd` /usr/bin/mysql_config FOLDER_IN_YOUR_PATH

  4. Powinien być teraz w stanie znaleźć mysql_config

Testowane na Ubuntu 18.04.

RunOrVeith
źródło
Czy to działa w CentOS 7? Zakładając, że nie mam zainstalowanego dostępu do roota lub dpkg, jak mam do niego podejść?
Sohil,
Nie musisz być rootem, dopóki pracujesz we własnym środowisku wirtualnym
BlackBear
2

W przypadku systemu macOS Mojave wymagana była dodatkowa konfiguracja, aby kompilatory mogły znaleźć openssl , konieczne może być ustawienie:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
Haidar Zeineddine
źródło
2

Myślę, że najwygodniejszym sposobem rozwiązania tego problemu w 2020 r. Jest użycie innego pakietu python. Nie potrzebujemy instalować żadnego innego oprogramowania binarnego.

Spróbuj tego

pip install mysql-connector-python

i wtedy

import mysql.connector

mydb = mysql.connector.connect(
          host="",
          user="",
          passwd="",
          database=""
          )      
cursor = mydb.cursor( buffered=True)
cursor.execute('show tables;')
cursor.execute('insert into test values (null, "a",10)')
mydb.commit()
mydb.disconnect()

xfdywy
źródło
1

Napotkałem ten sam problem, po prostu dodałem ścieżkę, w której * mysql_config * rezydował do zmiennej środowiskowej PATH i zadziałało to dla mnie.

ulotka
źródło
1

sudo apt-get build-dep python-mysqldb zainstaluje wszystkie zależności, aby zbudować pakiet z PIP / easy_install

Thomas Grainger
źródło
1

Rzeczywisty błąd to

gcc ... -I/usr/include/python2.7 ...

_mysql.c:29:20: error: Python.h: No such file or directory

a jeśli nie możesz zainstalować pakietów python-dev lub python-devel, możesz pobrać archiwum z potrzebną wersją źródeł python ze strony http://hg.python.org/ i umieścić pliki nagłówków w odpowiednim folderze w celu dołączenia

Oleg Neumyvakin
źródło
1

Po prostu wpisz:

$ sudo apt-get install python-dev
$ venv/bin/pip install MySQL-python

To rozwiąże te problemy.

Luciano D. Mota
źródło
3
Jeśli pojawi się błąd związany z mysql_config, wykonaj to:sudo apt-get install libmysqlclient-dev
Luciano D. Mota
1

W CentOS 7 należy wykonać następujące czynności:

#step1:install mysql 
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

#step2:
sudo yum install mysql-devel
DachuanZhao
źródło