mysql_config не знайдено при встановленні інтерфейсу mysqldb python


478

Я намагаюся отримати скрипт Python для запуску на сервері Linux, до якого я підключений через ssh. У сценарії використовується mysqldb. У мене є всі інші потрібні мені компоненти, але коли я намагаюся встановити mySQLdb через setuptools так :,

python setup.py install

Я отримую такий звіт про помилку, пов'язаний з mysql_configкомандою.

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

Хто-небудь ще стикався з цією помилкою, і якщо так, як ви її вирішили / що я можу зробити, щоб успішно встановити mysqldb?


1
Привіт @ user904542 - Я відредагував ваше запитання, щоб сподіватися зробити його трохи більш стислим і отримати відповіді :) Якщо вам це не подобається чи хочете надати додаткові деталі, під вашим запитанням є посилання для редагування, яке ви може використовувати або відкат до оригіналу, або додати внесені мною зміни.

3
Я зіткнувся з точно такою ж проблемою, тому що я встановив mysql з джерела. якщо ви теж зробите це, просто запустіть щось подібне, щоб зробити mysql_config доступним: sudo ln -s / usr / local / mysql / bin / mysql_config / usr / bin / mysql_config або додати / usr / local / mysql / bin / на свій шлях.
Thi Duong Nguyen

Якщо ви вже встановили mysql, вищевказаний коментар Thi Duong Nguyen вирішує проблему, створивши символьне посилання на файл mysql_config в каталозі / usr / bin, який знаходиться в шляху, по якому пітон шукатиме.
Alex Boschmans

2
просто зробіть це ------------- apt-get install python-mysqldb
shadow0359

@AlexBoschmans символізувати /usr/binнеправильно, це usr/local/my...бачить відповідь Ті.
Тимо

Відповіді:


701

mySQLdb - це інтерфейс python для mysql, але це не сам mysql. І, очевидно, mySQLdb потрібна команда 'mysql_config', тому вам потрібно встановити цю функцію спочатку.

Чи можете ви підтвердити, що ви зробили чи не встановили сам mysql, запустивши "mysql" з оболонки? Це має дати вам відповідь, окрім "mysql: команда не знайдена".

Який дистрибутив Linux ви використовуєте? Mysql попередньо упакований для більшості дистрибутивів Linux. Наприклад, для debian / ubuntu встановити mysql так само просто

sudo apt-get install mysql-server

mysql-config є в іншому пакеті, який можна встановити з (знову ж таки, припустимо, debian / ubuntu):

sudo apt-get install libmysqlclient-dev

якщо ви використовуєте mariadb, крапля заміни mysql, тоді запустіть

sudo apt-get install libmariadbclient-dev

Довідка: https://github.com/JudgeGirl/Judge-sender/isissue/4#issuecomment-186542797


1
Читання списків пакетів ... Готово дерево залежності залежності Читання інформації про стан ... Виконано Примітка, вибір libmysqlclient15-dev замість libmysqlclient-dev Деякі пакети не вдалося встановити. Це може означати, що ви подали запит на неможливу ситуацію, або якщо ви використовуєте нестабільну дистрибутиву, що деякі необхідні пакети ще не створені або винесені з Incoming. Наступна інформація може допомогти вирішити ситуацію: Наступні пакети мають невиконані залежності: libmysqlclient15-dev: Залежить: zlib1g-dev, але він не буде встановлений E: Зламані пакети
user904542

2
Якщо "sudo apt-get install mysql" має бути "sudo apt-get install mysql-server"?
Коханц

4
Зауважте, що для Debian це sudo apt-get install mysql-serverіsudo apt-get install mysql-client
Marc Juchli

2
Чи можемо ми нарешті визнати, що «піп» - колосальний збій? Такі помилки є таким болем, і вони, здається, трапляються з більшістю пакетів. Python дуже потребує нового рішення для управління пакетами.
Едді Салліван

3
Для мене на Debian це був libmysqlclient-dev. Насправді я встановив обидва libmariadbclient-dev libmysqlclient-dev
mirek

187

Я встановлював python-mysqlна Ubuntu 12.04 за допомогою

pip install mysql-python

Спочатку у мене була така ж проблема:

Not Found "mysql_config"

Це працювало для мене

$ sudo apt-get install libmysqlclient-dev

Тоді у мене була така проблема:

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

Потім я спробував

apt-get install python-dev

І тоді я був задоволений :)

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

1
Також працює на openSUSE, де "libmysqlclient-dev" стає "libmysqlclient-devel". Тепер пакет pip встановлюється нормально. Дякую.
засідання

Дякую! Працює також на Ubuntu 14.04.1 LTS
Красимир

встановлення заголовків розробника python вирішило відсутню помилку Python.h. Дякую.
Natus Drew

3
якщо використовувати python3.x, спробуйте з apt-get встановити python3-dev.
Legolas Bloom

Це не спрацювало для мене 14.04 - "E: У пакета" python-dev "немає кандидата на встановлення"
Рене Вуллер

46

(Специфічно для Mac OS X)

Я багато чого спробував, але цей набір команд нарешті спрацював для мене.

  1. Встановити mysql
    brew install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. Додайте папку mysql bin в PATH
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
  5. mkdir /usr/local/Cellar/lib/
  6. Створіть симпосилання
    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( джерело )
  8. Нарешті, встановіть mysql-client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient

Оновлення: Якщо це не працює, @vinyll пропонує запуститись brew link mysqlдо кроку 8.


2
просто застосувавши крок 1-4, тоді працював. Дякую!
kujiy

Для кроку 4 використовуйте brew info mysqlдля отримання фактичного / правильного шляху до установки mysql. Потім, щоб PATHзміни зберігалися, зробіть export PATH..у своєму ~ / .bash_profile.
Джино Мемпін

крок 1-4 з brew link --overwrite mysql-connector-cтворами на моєму Mac
Голод

Нарешті, це працює на моїй Каталіні. Використовувати вказати відкритий ssl дуже важливо.
Happier

4
Мені довелося зробити brew link mysqlкрок 8 перед тим, щоб запустити його.
vinyll

37

На Red Hat мені довелося робити

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

Тоді це спрацювало.


3
Працював для мене на CentOS 7:yum install MySQL-python
hudolejev

2
Якщо вам необхідно встановити MySQL-pythonяк пакет Python, або з допомогою virtualenv, це може допомогти: yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev

2
Якщо ви використовуєте MariaDB на CentOS 7, запустіть sudo yum install mariadb-develспочатку, тоді ви можете встановити mysqlclient відpip install mysqlclient
Belter

звідки ви взяли gcc-devel rpm?
Фаяз

yum install mysql-develCentos 8
Дієго Андрес Діас Еспіноза

33

Нижче працювали для мене на Ubuntu 12.04 LTS:

apt-get install libmysqlclient-dev python-dev

Незважаючи на те, що це спрацювало, я все одно продовжував робити наступне:

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

27

Я отримав таку ж помилку при спробі встановлення mysql-python.

Ось як я це виправив.

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

Проблема полягала в тому, що інсталятор не зміг знайти mysql_config у шляху за замовчуванням. Тепер він може .. і це працювало ..

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

Сподіваюсь, це допомагає.

Дякую.


У мене була така ж проблема, як локально встановити MySQL на Mac під керуванням OSX 10.9.4 (Mavericks). Це рішення спрацювало і для мене.
День

20

Я вирішив цю проблему наступними кроками:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install

1
При запуску> = Debian Stretch не забудьте встановити default-libmysqlclient-dev, оскільки звичайний libmysqlclient-devпакет не має можливості встановити.
Bono

19

Команди (також mysql) mPATH можуть бути відсутні.

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


11

Крок1: - Встановіть Python3 та Python3-dev обидва

sudo apt-get install python3 python3-dev

Крок 2: - Встановіть роз'єм Python & Mysql

sudo apt-get install libmysqlclient-dev

крок 3: - Встановити клієнт python mysql

sudo apt-get install mysqlclient

Це вирішить вашу проблему


Крок 2 зафіксував це для мене.
сольчікен

Це вирішило мою проблему, яка клопіла мене протягом 3 годин .. Дякую вам дуже !!!
Yeojin

10

Якщо ви перебуваєте на macOS та вже встановили mysql@5.7 через встановлення пива:

  1. brew install mysql-connector-c
  2. brew unlink mysql@5.7
  3. brew link --overwrite --dry-run mysql@5.7 по-перше, щоб побачити, які посилання переписуються
  4. brew link --overwrite --force mysql@5.7 фактично перезаписати посилання mysql, пов’язані з mysql, на mysql@5.7
  5. pip install mysqlclient

9

Я виправив це, встановивши libmysqlclient:

sudo apt-get install libmysqlclient16-dev

9

У MySQL-pythonпакеті використовується mysql_configкоманда, щоб дізнатися про mysqlконфігурацію вашого хоста. Ваш хост не має mysql_configкоманди.

Пакет бібліотек розробок MySQL (MySQL-devel-xxx) від dev.mysql.com забезпечує цю команду та бібліотеки, необхідні пакету MySQL-python. В MySQL-develпакетах знаходяться в завантаженнях - області сервера спільноти. Назви пакетів бібліотеки розробок MySQL починаються з MySQL-develта змінюються залежно від версії MySQL та платформи Linux (наприклад, MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm)

Зауважте, що вам не потрібно встановлювати сервер mysql.


8

Пакет libmysqlclient-dev застарілий, тому для виправлення використовуйте команду нижче.

Пакет libmysqlclient-dev недоступний, але він посилається на інший пакет. Це може означати, що пакет відсутній, застарілий або доступний лише з іншого джерела

sudo apt-get install default-libmysqlclient-dev


5

На моїй машині Fedora 23 мені довелося виконати наступне:

sudo dnf install mysql-devel

5

Для альпійського Linux:

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

MariaDB - це замінна версія для MySQL, яка стала новим стандартом Alpine 3.2. Дивіться https://bugs.alpinelinux.org/isissue/4264


1
що робить моє альпійське зображення майже 500 Мбіт, я прийшов до альпійського за меншим розміром зображення
ospider

Мені також доведеться встановити python3-dev для створення lib
ospider

4

Я думаю, наступні рядки можна виконати на терміналі

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

Цей каталог mysql_config призначений для zend-сервера на MacOSx. Ви можете зробити це для Linux, як наступні рядки

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

Це за замовчуванням каталог Linux mysql.


4

У мене були ці проблеми і вирішено, якщо додати символьне посилання на mysql_config.

Я встановив mysql з домашньою мовою і побачив це у висновку.

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

Залежно від того, як ви mysqlїї отримаєте, вона буде в різних місцях. У моєму випадку, /usr/local/Cellar/mysql
як тільки ви дізнаєтесь, де це, ви повинні мати можливість створити символічне посилання на те, де пітон шукає його. /usr/local/mysql

Це працювало для мене.

ln -s /usr/local/Cellar/mysql/<< VERSION >>/bin/mysql_config   /usr/local/mysql/bin/mysql_config

4

У мене була така ж проблема. Я вирішив це, дотримуючись цього підручника для встановлення Python з python3-dev на 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

А тепер ви можете налаштувати своє віртуальне середовище:

sudo apt-get install -y python3-venv
pyvenv my_env
source my_env/bin/activate

3

Вам потрібно встановити пакунок python-dev:

sudo apt-get install python-dev

2

sudo apt-get install python-mysqldb

Python 2.5? Здається, ви використовуєте дуже стару версію сервера Ubuntu (Hardy 8.04?) - підтвердьте, яку версію Linux використовує сервер.

пошук python-mysql в базі даних пакетів ubuntu

Деякі додаткові відомості:

З ПРОЧИТАННЯ mysql-python -

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

MySQL-python попередньо упакований у Red Hat Linux 7.x та новіші. Сюди входять Fedora Core та Red Hat Enterprise Linux. Ви також можете створити власні пакети RPM, як описано вище.

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

Упаковано як python-mysqldb_ ::

# apt-get install python-mysqldb

Або використовувати Synaptic.

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

Ubuntu ......

Те саме, що і з Debian.

Примітка. Якщо ви дійсно використовуєте серверний дистрибутив, старший за Ubuntu 10.04, тоді ви не маєте офіційної підтримки, і вам слід скоріше оновити оновлення.


Я можу підтвердити Debian 10 sudo apt-get install python-mysqldb
Тедо Врбанек

Це все, що вам потрібно зробити: dev.mysql.com/doc/connector-python/en/…
Абхіндандан Дюбі

2

Цей метод призначений лише для тих, хто знає, що Mysql встановлений, але його все ще не знайдеш mysql_config. Це відбувається, якщо програма встановлення python не може знайти mysql_config у вашому системному шляху, що в основному відбувається, якщо ви виконали встановлення через .dmg Mac Package або встановлені на якомусь власному шляху. Найпростіший і документально підтверджений спосіб MySqlDB - це змінити site.cfg . Знайдіть mysql_config, який, ймовірно, знаходиться в / usr / local / mysql / bin / і змініть змінну, а саме mysql_config, як нижче, і запустіть інсталяцію ще раз. Не забудьте відмінити коментар, видаливши "#"

Змінити під рядком

"#mysql_config = / usr / local / bin / mysql_config"

до

"mysql_config = / usr / local / mysql / bin / mysql_config"

залежно від шляху у вашій системі.

До речі, я використовував встановлення python після зміни site.cfg

sudo /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python setup.py встановити


2

Поки всі рішення (Linux) вимагають sudoабо root права встановлювати. Ось рішення, якщо у вас немає прав на root і без них sudo. (ні sudo apt install ...):

  1. Завантажте .deb файл libmysqlclient-dev, наприклад, з цього дзеркала
  2. Перейдіть до завантаженого файлу та запустіть dpkg -x libmysqlclient-dev_<version tag>.deb .Це дозволить отримати папку під назвою usr.
  3. Symlink ./usr/bin/mysql_configдо місця, яке знаходиться у вашому $PATH:

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

  4. Зараз це слід знайти mysql_config

Тестовано на Ubuntu 18.04.


Чи працює це в CentOS 7? Якщо припустити, що у мене немає кореневого доступу або dpkg, як я повинен підходити до нього?
Сохіль

Не потрібно
BlackBear

2

Для macOS Mojave була потрібна додаткова конфігурація, щоб компілятори знаходили openssl , можливо, знадобиться встановити:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"

2

Я думаю, що найзручнішим способом вирішити цю проблему у 2020 році є використання іншого пакету python. Нам не потрібно встановлювати будь-яке інше бінарне програмне забезпечення.

Спробуйте це

pip install mysql-connector-python

і потім

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


1

Я зіткнувся з тією ж проблемою, щойно додав шлях, де * mysql_config * знаходився до змінної середовища PATH, і він працював на мене.



1

Як фактична помилка

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

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

і Якщо ви не можете встановити пакети python-dev або python-devel, ви можете завантажити архів із необхідною версією джерел python з http://hg.python.org/ та розмістити файли заголовків у відповідній папці для включення


1

Просто введіть:

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

Це вирішить ці проблеми.


3
Якщо ви отримаєте помилку з mysql_config, встановіть це:sudo apt-get install libmysqlclient-dev
Лучано Д. Мота,

1

У CentOS 7 слід зробити наступне:

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

#step2:
sudo yum install mysql-devel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.