Mac OS X - EnvironmentError: mysql_config не найден

121

Во-первых, да, я это уже видел:

pip install mysql-python не работает с EnvironmentError: mysql_config не найден

Эта проблема

Я пытаюсь использовать Django в проекте Google App Engine. Однако мне не удалось начать работу, поскольку сервер не запускается должным образом из-за:

ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Я провел небольшое исследование, и все это указывало на необходимость установки Mysql-python, поскольку, по-видимому, его нет в моей системе. Я действительно попытался удалить его и получил следующее:

Cannot uninstall requirement mysql-python, not installed

Всякий раз, когда я действительно пытаюсь установить через:

sudo pip install MySQL-python

Я получаю сообщение об ошибке:

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

Я уже пробовал запустить:

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

но это, похоже, не помогло, так как я снова запустил команду установки, и она все равно не удалась.

Любые идеи?

Обратите внимание, я не в виртуальном мире.

daniel_c05
источник
Вы всегда можете перейти к файлу с EnvironmentErrorрасширением и распечатать более полезную отладочную информацию, например os.getcwd(). вы также можете добавить pdb.set_trace()и выяснить вещи.
ealfonso

Ответы:

340

Хорошо, сначала позвольте мне проверить, нахожусь ли я на той же странице, что и вы:

  • Вы установили питон
  • Ты сделал brew install mysql
  • Ты сделал export PATH=$PATH:/usr/local/mysql/bin
  • И, наконец, вы сделали pip install MySQL-Python(или pip3 install mysqlclientесли используете python 3)

Если вы выполнили все эти шаги в том же порядке, и у вас по-прежнему возникает ошибка, читайте до конца, если, однако, вы не выполнили эти точные шаги, попробуйте, следуя им с самого начала.

Итак, вы выполнили действия, но по-прежнему получаете сообщение об ошибке. Вот несколько вещей, которые вы можете попробовать:

  1. Попробуйте запустить which mysql_configиз bash. Наверное, не найдется. Вот почему сборка его тоже не находит. Попробуйте бежать locate mysql_configи посмотрите, не вернется ли что-нибудь. Путь к этому двоичному файлу должен быть либо в переменной окружения $ PATH вашей оболочки, либо он должен быть явно в файле setup.py для модуля, предполагая, что он ищет этот файл в каком-то определенном месте.

  2. Вместо MySQL-Python попробуйте использовать mysql-connector-python, его можно установить с помощью pip install mysql-connector-python. Более подробную информацию об этом можно найти здесь и здесь .

  3. Найдите вручную расположение mysql / bin, mysql_config и MySQL-Python и добавьте все это в переменную среды $ PATH.

  4. Если все вышеперечисленные действия не увенчались успехом, то вы можете попробовать установить «MySQL» с помощью MacPorts, в этом случае файл «mysql_config» на самом деле будет называться «mysql_config5», и в этом случае, вы должны сделать это после установки: export PATH=$PATH:/opt/local/lib/mysql5/bin. Вы можете найти более подробную информацию здесь .

Note1: Я видел некоторые люди говорят , что установка python-devи libmysqlclient-devпомог, но я не знаю , если эти пакеты доступны на Mac OS.

Примечание 2: Кроме того, попробуйте запустить команды от имени пользователя root.

Я получил свои ответы (помимо моего мозга) из этих мест (может быть, вы могли бы взглянуть на них, чтобы узнать, поможет ли это): 1 , 2 , 3 , 4 .

Я надеялся, что помог, и был бы рад узнать, сработало ли что-нибудь из этого или нет. Удачи.

Vadorequest
источник
2
Отличное объяснение, FWIW на Linux, установка python-dev и libmysqlclient-dev обычно единственное, что нужно сделать, чтобы заставить его работать, но на osx все, что мне нужно было сделать, это обновить мою ванну. Я считаю, что в Linux вы можете установить mysql без получения зависимостей python для mysql-python, если вы не устанавливаете указанные библиотеки dev. (Совершали эту ошибку ооочень много раз, смеется)
Иэн Дункан
1
После обновления до Yosemite он теперь также жалуется на отсутствие stdio.h. Вы можете исправить это, перейдя сюда: stackoverflow.com/questions/19580758/…
Михай Опреа
4
Бег brew install mysqlисправил это. Кроме того, эта команда which mysql-configу меня не сработала, но работала which mysql_config.
Чад
1
Мне также пришлось добавить эту строку в свой .bash_profileфайл:export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
JeffThompson
2
Пришлось указать на установку brewsexport PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
Climbs_lika_Spyder
6

Я отлаживал эту проблему вечно - 3 часа 17 минут. Что меня особенно раздражало, так это то, что у меня уже был установлен sql в моей системе через предыдущую работу с uni, но pip / pip3 не распознал его. Эти и многие другие темы, которые я искал в Интернете, помогли устранить проблему, но на самом деле не решили ее.

ОТВЕТ

Пип ищет двоичные файлы mysql в каталоге Homebrew, который расположен относительно Macintosh HD @

/usr/local/Cellar/

поэтому я обнаружил, что для этого нужно внести несколько изменений

шаг 1: Загрузите MySql, если это еще не сделано https://dev.mysql.com/downloads/

Шаг 2. Найдите его относительно Macintosh HD и компакт-диска.

/usr/local/mysql/bin

Шаг 3: Как только вы откроете терминал и воспользуетесь любым текстовым редактором - я сам неовим, поэтому я набрал (не приходит автоматически с Mac ... другая история на другой день)

nvim mysql_config

Шаг 4: примерно в строке 112 вы увидите

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

Изменить на

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

* вы заметите, что этот файл имеет доступ только для чтения, поэтому, если вы используете vim или neovim

:w !sudo tee %

Шаг 5: перейдите в домашний каталог и отредактируйте файл .bash_profile

cd ~

затем

nvim .bash_profile

и добавить

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

в файл, затем сохраните

Шаг 6: относительно Macintosh HD найдите пути и добавьте к нему

cd /private/etc/

затем

nvim paths

и добавить

/usr/local/mysql/bin

* вы снова заметите, что этот файл имеет доступ только для чтения, поэтому, если вы используете vim или neovim

:w !sudo tee % 

затем

cd ~

затем обновите терминал с вашими изменениями, запустив

source .bash_profile

в заключение

pip3 install mysqlclient

И Виола. Помните, что это атмосфера.

Тревор Джеймс Олуотч
источник
Моя libsвнутренняя часть mysql_configуже была такой, как описано в разделе «Изменить на». Однако добавление PATH в private/etcпомогло разрешить глобальную установку mysqlclientэтого раньше.
martin-martin
5

Если вы не хотите устанавливать полный mysql, мы можем исправить это, просто установив mysqlclient. brew install mysqlclient После завершения cmd он попросит добавить строку ниже в ~/.bash_profile:

echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile

Закройте терминал, запустите новый терминал и продолжайте pip install mysqlclient

Arun
источник
3

Я запускаю Python 3.6 на MacOS Catalina. Моя проблема заключалась в том, что я пытался установить, mysqlclient==1.4.2.post1и он продолжает выдавать ошибку mysql_config not found.

Вот шаги, которые я предпринял для решения проблемы.

  1. Установите mysql-connector-c с помощью brew (если у вас уже есть mysql, сначала установите unlink brew unlink mysql) -brew install mysql-connector-c
  2. Откройте mysql_config и отредактируйте файл около строки 112
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - это даст вам больше информации о том, что нужно сделать, чтобы поместить openssl в PATH
  2. Что касается шага 3, вам нужно сделать это, чтобы поместить openssl в PATH - echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. для компиляторов, чтобы найти openssl - export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. для компиляторов, чтобы найти openssl - export CPPFLAGS="-I/usr/local/opt/openssl/include"
azmirfakkri
источник
Спасибо! Я столько всего перепробовал, и ваш метод у меня сработал.
Ягимутсу,
2

Также это происходит, когда я устанавливал mysqlclient,

$ pip install mysqlclient

Как сказал user3429036,

$ brew install mysql
AndreL
источник
1

Этот ответ предназначен для пользователей MacOS, которые установили не brewс официального сайта, а с него .dmg/.pkg. Этот установщик не может отредактировать ваш PATH, что приводит к выходу из коробки:

  1. Все команды MySQL нравится mysql, mysqladmin, mysql_configи т.д. не могут быть найдены, и в результате:
  2. «MySQL панели настроек» не появляется в настройках системы, и
  3. вы не можете установить какой-либо API, который взаимодействует с MySQL, включая mysqlclient

Что вам нужно сделать, так это добавить binпапку MySQL (обычно /usr/local/mysql/binв вашем PATH, добавив эту строку в свой ~/.bash_profileфайл:

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

Затем вам следует перезагрузить, ~/.bash_profileчтобы изменения вступили в силу в вашем текущем сеансе терминала:

source ~/.bash_profile

Однако перед установкой mysqlclientвам необходимо принять лицензию XcodeBuild:

sudo xcodebuild -license

Следуйте их указаниям, чтобы выйти из семьи, после чего вы сможете mysqlclientбез проблем установить :

pip install mysqlclient

После установки вы должны сделать еще одну вещь, чтобы исправить ошибку времени выполнения, которая поставляется с MySQL ( динамическая библиотека libmysqlclient.dylibне найдена ), добавив эту строку в путь к динамическим библиотекам вашей системы:

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

Жанвен Чен
источник
Я увидел ваш ответ после того, как нашел двоичные файлы на диске, запустив его sudo lsof -i :3306для просмотра PID активного процесса MySQL, а затем запустив его sudo -P <pid>, чтобы увидеть его открытые файлы. Это придумал, /usr/local/mysql-8.0.18-macos10.14-x86_64/binчто я добавил $PATHи вуаля !
Neil C. Obremski
0

Если вы установили mysql с помощью Homebrew , указав версию, то здесь будет присутствовать mysql_config . - /usr/local/Cellar/mysql@5.6/5.6.47/bin

вы можете найти путь к sql bin с помощью команды ls в каталоге / usr / local /

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

Добавьте путь к профилю bash следующим образом.

nano ~/.bash_profile

export PATH="/usr/local/Cellar/mysql@5.6/5.6.47/bin:$PATH"
mohammed_ayaz
источник
0

В моем случае проблема заключалась в том, что я запускал команду внутри виртуальной среды python, и у нее не было пути к / usr / local / mysql / bin, хотя я поместил его в файл .bash_profile. Для меня сработал просто экспорт пути в виртуальный env.

Для вашей информации sql_config находится внутри каталога bin.

ac_baz
источник
-1

Установить brew или apt-get для меня тоже непросто, поэтому я скачал mysql через: https://dev.mysql.com/downloads/connector/python/ , установил его. Итак, я могу найти mysql_config в этом каталоге: / usr / local / mysql / bin

следующий шаг:

  1. экспорт PATH = $ PATH: / usr / local / mysql / bin
  2. pip установить MySQL-python == 1.2.5
J.Mark
источник