mysql_config не найден при установке Python-интерфейса mysqldb


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 / к своему пути.
Ти Дуонг Нгуен

Если вы уже установили mysql, приведенный выше комментарий Тхи Дуонга Нгуена решает проблему путем создания символической ссылки на файл mysql_config в каталоге / usr / bin, который находится в пути, по которому будет искать python.
Алекс Бошманс

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/issues/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
Марк Джучли

2
Можем ли мы наконец признать, что «пипс» - колоссальный провал? Подобные ошибки являются такой болью, и они, кажется, случаются с большинством пакетов. Python остро нуждается в новом решении для управления пакетами.
Эдди Салливан

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

188

Я устанавливал 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 устанавливается нормально. Спасибо.
pbarill

Спасибо! Также работает на Ubuntu 14.04.1 LTS
Красимир

установка заголовков разработчика Python позволила устранить пропущенную ошибку Python.h. Спасибо.
Natus Drew

3
если использовать python3.x, попытайтесь с помощью apt-get установить python3-dev.
Леголас Блум

Это не сработало для меня 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. Добавьте папку bin MySQL в 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 клиент
    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
Голод

Наконец, это работает на моей Каталине. Использование уточняйте open ssl очень важно.
Счастливее

4
Я должен был сделать brew link mysqlдо шага 8, чтобы запустить его.
Винилл

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
Худолеев

2
Если вам необходимо установить MySQL-pythonкак пакет Python, или с помощью virtualenv, это может помочь: yum install mysql-devel; venv/bin/pip install MySQL-python.
Худолеев

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пакет не имеет кандидата на установку.
Боно

19

Команды (тоже mysql) mPATH могут отсутствовать.

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


11

Шаг 1: - Установите Python3 и Python3-dev Both

sudo apt-get install python3 python3-dev

Шаг 2: - Установите Python & Mysql Connector

sudo apt-get install libmysqlclient-dev

Шаг 3: - Установите клиент Python MySQL

sudo apt-get install mysqlclient

Это решит вашу проблему


Шаг 2 исправил это для меня.
соленая курица

Это исправило мою проблему, которая мешала мне в течение 3 часов .. Большое вам спасибо !!!
Yeojin

10

Если вы используете macOS и уже установили mysql@5.7 через brew install:

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

Для Alpine Linux:

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

MariaDB является заменой MySQL и стала новым стандартом для Alpine 3.2. См. Https://bugs.alpinelinux.org/issues/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 с homebrew и увидел это в выводе.

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

В зависимости от того, как вы mysqlего получили, будет в разных местах. В моем случае, как /usr/local/Cellar/mysql
только вы узнаете, где он находится, вы сможете создать символическую ссылку на то, где его ищет python. /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 установить python-mysqldb

Python 2.5? Похоже, вы используете очень старую версию Ubuntu Server (Hardy 8.04?) - пожалуйста, подтвердите, какую версию Linux использует сервер.

поиск python-mysql в базе данных пакетов ubuntu

Некоторая дополнительная информация:

Из README 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 install


2

Пока что все решения (Linux) требуют sudoили root-права для установки. Вот решение, если у вас нет рут прав и без sudo. (нет sudo apt install ...):

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

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

  4. Теперь должно быть в состоянии найти mysql_config

Проверено на Ubuntu 18.04.


Это работает в CentOS 7? Предполагая, что у меня нет root-доступа или установлен dpkg, как мне подойти к нему?
Сохил

Не нужно быть пользователем root, пока вы работаете в собственной виртуальной среде
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

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