pip install mysql-python kończy się niepowodzeniem z EnvironmentError: nie znaleziono mysql_config

823

To jest błąd, który otrzymuję

(mysite)zjm1126@zjm1126-G41MT-S2:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 24, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>

    metadata, options = get_config()

  File "setup_posix.py", line 43, in get_config

    libs = mysql_config("libs_r")

  File "setup_posix.py", line 24, in mysql_config

    raise EnvironmentError("%s not found" % (mysql_config.path,))

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log
(mysite)zjm1126@zjm1126-G41MT-S2:~/zjm_test/mysite$ pip install mysql-python
Downloading/unpacking mysql-python
  Running setup.py egg_info for package mysql-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 24, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/home/zjm1126/zjm_test/mysite/build/mysql-python/setup.py", line 15, in <module>

    metadata, options = get_config()

  File "setup_posix.py", line 43, in get_config

    libs = mysql_config("libs_r")

  File "setup_posix.py", line 24, in mysql_config

    raise EnvironmentError("%s not found" % (mysql_config.path,))

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/zjm1126/.pip/pip.log

Co mogę zrobić, aby rozwiązać ten problem?

zjm1126
źródło
1
Zobacz ten wątek: [mysql_config nie został znaleziony podczas instalowania MySQLdb python interfejs] [1] pracował dla mnie :) [1]: stackoverflow.com/questions/7475223/...
Staccato
Jestem użytkownikiem systemu MAC OS Rozwiązuję ten problem za pomocą tego pytania stackoverflow.com/questions/50940302/...
PatricioS,

Odpowiedzi:

1397

Wygląda na to, że w systemie brakuje mysql_config lub instalator nie mógł go znaleźć. Upewnij się, że mysql_config jest naprawdę zainstalowany.

Na przykład na Debian / Ubuntu musisz zainstalować pakiet:

sudo apt-get install libmysqlclient-dev

Może mysql_config nie znajduje się na twojej ścieżce, tak będzie w przypadku samodzielnej kompilacji pakietu mysql.

Aktualizacja: dla najnowszych wersji debian / ubuntu (od 2018 r.) Jest

sudo apt install default-libmysqlclient-dev
Fbo
źródło
24
To wciąż powoduje błąd. Użyłem apt-get install python-mysqldbzamiast tego.
Jonatan Littke
51
moje doświadczenie 2c: sudo apt-get install libmysqlclient-devpracowało dla mnie, sudo apt-get install python-mysqldbnie pomogło
Anentropic
20
@JonatanLittke Instalacja globalnego rodzaju python-mysqldb jest sprzeczna z punktem wirtualnej IMO.
fncomp
42
dla Mariadba załatwiło sprawę sudo apt-get install libmariadbclient-dev.
yuvilio
11
Jeśli te rozwiązania nie działają dla Ciebie, być może nadal będziesz musiał zainstalować python-dev:apt-get install python-dev
Anoyz
295

W Mac OS po prostu uruchomiłem to w terminalu, aby naprawić:

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

Jest to najszybsza poprawka, jaką znalazłem - dodaje ją do ścieżki, ale myślę, że lepiej jest dodać ją na stałe (tj. Dodać do /etc/paths), jeśli planujesz zainstalować MySQL-python w innym środowisku.

(testowany w OSX Mountain Lion)

Chris Villa
źródło
6
Jeśli używasz stosu MAMP bitnami, użyj go. export PATH=$PATH:/Applications/mampstack-5.3.17-0/mysql/binJeśli używasz tego komercyjnego stosu MAMP , z drugiej strony, odinstaluj go i zdobądź bitnami, ponieważ jest gówno i nie zawiera nagłówków mysql.
Timmmm,
3
Aby ścieżka była stała, dodaj ją na dole /etc/paths- będziesz musiał otworzyć nowe okno terminala, aby uzyskać dostęp do nowej ścieżki.
rojoca
@ Timmmm Dość drogie rozwiązanie, ponieważ wszystkie moje bazy danych są w oficjalnej wersji: / czy jest jakiś inny sposób, aby to rozwiązać?
Volatil3
1
Bardzo pomocny. Jeśli używasz XAMPP, użyj go jakoexport PATH=$PATH:/Applications/XAMPP/xamppfiles/bin
Kevin London
10
To w końcu działa dzięki! także jeśli mysqlnie jest zainstalowany, użyj brew install mysqltam , gdzie jest lokalizacja /usr/local/bin/mysql(lub /usr/local/Cellar/mysql/VERSION/bin/jeśli nie jest dowiązanie symboliczne).
Aziz Alto,
102
apt-get install libmysqlclient-dev python-dev

Wydaje się, że załatwi sprawę.

Steve-Gregory
źródło
2
tak, dla mnie tylko libmysqlclient-dev nie wystarczyło, brakowało również python-dev.
Anderson Santos
Na Ubuntu 12.04 (precyzyjnie) (32-bit) po aktualizacji w miejscu z 10.04 (lucid) tylko to rozwiązało te błędy. Zwłaszcza dodatkowy „python-dev”!
Ice
Pracowałem również dla mnie - python-dev był ostatnim elementem układanki. Masz już zainstalowany python-mysqldb, więc to zdecydowanie nie wszystko, co jest potrzebne.
Tim S.
Aktualizacja: dla Python3 musisz zainstalować python3-dev.
cezar
Musiałem to zrobić, a także zainstalować, gccaby uzyskać udaną instalację. Ponadto, jest to prawdopodobnie najlepiej nie robić python-dev, ale określenie konkretnej wersji, takich jak python2.7-dev, python3.6-devitp
Tim Tisdall
89

Możliwe są różne odpowiedzi na powyższy problem, poniżej jest zagregowane rozwiązanie.

W przypadku Ubuntu:

$ sudo apt update
$ sudo apt install python-dev
$ sudo apt install python-MySQLdb

W przypadku CentOS:

$ yum install python-devel mysql-devel
użytkownik 2886440
źródło
Dzięki za wskazówkę centos. Ścigałem to przez cały ranek.
Pete Magsig
Może warto dodać python3-dev/python3-devel
Gergely M
36

Jeśli korzystasz z MAC, zainstaluj to globalnie

brew install mysql

następnie wyeksportuj ścieżkę w ten sposób

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

Niż globalnie lub w swoim miejscu, co chcesz

pip install MySQL-Python

Uwaga: globalnie dla Python3, ponieważ Mac może mieć zarówno Python2, jak i 3

pip3 install MySQL-Python
Zaman Afzal
źródło
34

Możesz użyć MySQL Connector / Python

Instalacja przez PyPip

pip install mysql-connector-python

Więcej informacji można znaleźć na blogu ogłoszeniowym MySQL Connector / Python 1.0.5 beta .

Na Launchpadzie istnieje dobry przykład dodawania, edytowania lub usuwania danych za pomocą biblioteki.

ndequeker
źródło
3
To jedyna rzecz, która działała dla mnie, gdy zrezygnowałem z mysqldb i brakującego bałaganu mysql_config. Działa dobrze dla moich celów.
wh1tney,
@wjoba, czy możesz wyjaśnić dalej? Jestem instalować py-mysql2pgsqli znajduję błąd rzeczy mysql_config. Używam MAMP. Do czego służy złącze mysqk?
Volatil3
1
@ Volatil3 mysql-connector-python działał dobrze dla mnie jako gotowy do użycia zamiennik mysql-python. Instalacja tego pierwszego przez pip działała bez problemów i pozbyła się błędu mysql_config, ponieważ (własnymi słowami dewelopera) konektor mysql jest „czystym Pythonem i nie potrzebuje żadnego innego oprogramowania MySQL, a więc nie ma bibliotek C i kompilacji”. Mam nadzieję, że to pomaga. Wypróbuj instalację wymienioną w tym rozwiązaniu i sprawdź, czy nadal występuje błąd.
wh1tney
Na Ubuntu 14/4 otrzymuję: Nie mogę znaleźć żadnych plików do pobrania, które spełniają wymagania mysql-connector-python
Timo
To polecenie zadziałało dla mnie po wypróbowaniu wszystkiego innego.
Zegary
27

Dla użytkowników centos :

yum install -y mysql-devel python-devel python-setuptools

następnie

pip install MySQL-python


Jeśli to rozwiązanie nie działa , i wydrukuj błąd kompilacji gcc, taki jak:
_mysql.c:29:20: error: Python.h: No such file or directory

Musisz określić ścieżkę Python.h:
pip install --global-option=build_ext --global-option="-I/usr/include/python2.6" MySQL-python

lancereks
źródło
1
Brzmi to tak, jakbyś nie miał odpowiednich plików dołączanych do pipinstalowanego pliku binarnego Python . Sam Python zwykle zapewnia lokalizację włączenia; ręczne określenie ścieżki najprawdopodobniej wskazuje niewłaściwą wersję .
Martijn Pieters
Musiałem zrobić błąd z sudo pip install MySQL-pythonpowodu błędu:copying build/lib.linux-x86_64-2.7/_mysql_exceptions.py -> /usr/lib64/python2.7/site-packages error: /usr/lib64/python2.7/site-packages/_mysql_exceptions.py: Permission denied
bennythejudge
18

Próbowałem zainstalować mysql-pythonna instancji Amazon EC2 Linux i musiałem zainstalować te:

yum install mysql mysql-devel mysql-common mysql-libs gcc

Ale potem dostałem ten błąd:

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

Więc zainstalowałem:

yum install python-devel

I to załatwiło sprawę.

Emil Davtyan
źródło
1
Użyłem: sudo yum install mysql mysql-devel mysql-common mysql-libs gcc poza moim wirtualnym. Potem wróciłem do mojej wirtualnej env i pobiegłem pip install mysql-pythoni zadziałało.
tandy
1
dnf install mysql-devel gccbyło dla mnie wystarczające, to zależy od reszty
Jens Timmerman
python-develda teraz błąd, jeśli używasz Pythona 2.7, spróbuj tegopython27-devel
Sizzling Code
8

Dla każdego, kto używa MariaDB zamiast MySQL, rozwiązaniem jest instalacja libmariadbclient-devpakietu i utworzenie dowiązania symbolicznego do pliku konfiguracyjnego o poprawnej nazwie.

Na przykład to zadziałało dla mnie:

ln -s /usr/bin/mariadb_config /usr/bin/mysql_config
Alexandru Chirila
źródło
2
Jest to niedoceniana odpowiedź przydatna w każdym przypadku, gdy chce się połączyć z określonym, znanym gniazdem bazy danych. Pomogło mi to połączyć się z samodzielną bazą danych mysql. Większość rozwiązań tutaj po prostu zaleca ponowną instalację (lub instalację drugiego lub trzeciego ... itd.) Klienta msql!
7yl4r
6

Próbować sudo apt-get build-dep python-mysqldb

KalamHavij
źródło
6

OSX Mavericks

Z powodu zmian w narzędziach programistycznych i programistycznych xcode dla systemu osx może pojawić się błąd podczas instalacji

clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]

dlatego użyj:

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install mysql-python
Thomas Schwärzl
źródło
6

Dla systemu Linux

to działa dla mnie

yum install python-devel mysql-devel
grosz chan
źródło
5

dla mariadb zainstaluj lib mariadb client-dev zamiast libmysqlclient-dev

sudo apt-get install libmariadbclient-dev
Dinesh Sharma
źródło
Właśnie tego potrzebuję, używając Debian 9 Stretch z MariaDB
anhtran
4

Powinieneś zainstalować mysqlpierwszy:

yum install python-devel mysql-community-devel -y

Następnie możesz zainstalować mysqlclient:

pip install  mysqlclient
samolot
źródło
2

czasami błąd zależy od rzeczywistej przyczyny. mieliśmy przypadek, w którym mysql-python został zainstalowany przez pakiet debian python-mysqldb.

programista, który nie wiedział o tym, przypadkowo uruchomił, pip uninstall mysql-pythona następnie nie udało się odzyskać z pip install mysql-pythonpodaniem powyższego błędu.

pip uninstall mysql-python zniszczyło zawartość pakietu Debian i oczywiście pip install mysql-python zawiódł, ponieważ pakiet debian nie potrzebował żadnych plików deweloperskich.

poprawnym rozwiązaniem w tym przypadku było apt-get install --reinstall python-mysqldbprzywrócenie pierwotnego stanu mysql-python.

eMBee
źródło
2

Miałem ten sam problem w Terraform: lekki pojemnik. Opiera się na alpejskim.

Tam musisz zainstalować mariadb-dev z:

apk add mariadb-dev

Ale to nie wystarczy, ponieważ brakuje również wszystkich innych zależności:

apk add python2 py2-pip gcc python2-dev musl-dev
Alex
źródło
2

Sekwencja, której należy przestrzegać.

pip install mysqlclient
sudo apt-get install python3-dev libmysqlclient-dev
pip install configparser 
sudo cp /usr/lib/python3.6/configparser.py /usr/lib/python3.6/ConfigParser.py 

Następnie spróbuj ponownie zainstalować python MYSQL. To działało dla mnie

lakshmankashyap
źródło
1

Miał podobny problem podczas próby instalacji na OS X Server 10.6.8. Oto co musiałem zrobić. Za pomocą:

MySQL-python 1.2.4b4 (źródło) MySQL-5.6.19 (instalator binarny) Python 2.7 (instalator binarny) UWAGA: Instalowanie w virtualenv ...

Rozpakuj źródło, otwórz „distribute_setup.py” i edytuj DEFAULT_VERSION, aby użyć najnowszej wersji narzędzi do dystrybucji, takich jak:

DEFAULT_VERSION = "0.6.49"

Zapisać. Otwórz plik „site.cfg” i odkomentuj ścieżkę do mysql_config, aby wyglądała mniej więcej tak (odwołaj się do własnej ścieżki do mysql_config):

# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
mysql_config = /usr/local/mysql/bin/mysql_config

Teraz czyszczenie, kompilacja i tworzenie nie zakończy się niepowodzeniem z błędem „mysql_config” nie znaleziono. Mam nadzieję, że to pomoże komuś innemu próbować wykorzystać ich stare xserves :-)

Brad Herdson
źródło
1

Twoja ścieżka sudo nie wie o twojej ścieżce lokalnej ... przejdź do trybu superużytkownika, dodaj ścieżkę i stamtąd ją zainstaluj.

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

I pracujesz na OSX. Teraz masz zaktualizowany globalny python.

Paul Kenjora
źródło
1

jeśli zainstalujesz MySQL-python w wirtualnej env, powinieneś sprawdzić wersję pip, jeśli wersja jest starsza niż 9.0.1, zaktualizuj ją

pip install --upgrade pip
Albert Chen
źródło
Zobacz stackoverflow.com/questions/7475223/ ... Nie sądzę, aby twoja odpowiedź pomogła
Linus
0

na MacOS Mojave mysql_config znajduje się w / usr / local / bin / zamiast / usr / local / mysql / bin, jak wskazano powyżej, więc nie trzeba niczego dodawać do ścieżki.

Avidan Efody
źródło