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


121

По-перше, так, я вже бачив це:

не вдалося встановити файл pip 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

але це, мабуть, не допомогло, оскільки я знову запустив команду встановлення, і вона все ще не вдалася.

Будь-які ідеї?

Зверніть увагу, що я не в віртуальній програмі.


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

Відповіді:


340

Добре, по-перше, дозвольте мені перевірити, чи перебуваю я на тій же сторінці, що і ви:

  • Ви встановили python
  • Ти зробив brew install mysql
  • Ти зробив export PATH=$PATH:/usr/local/mysql/bin
  • І нарешті, ви зробили pip install MySQL-Python(або pip3 install mysqlclientякщо використовуєте python 3)

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

Отже, ви дотримувались кроків, і ви все ще отримуєте помилку, ну, ви можете спробувати кілька речей:

  1. Спробуйте бігти which mysql_configз баша. Ймовірно, його не знайдуть. Тому і збірка не знаходить її. Спробуйте запустити 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. Більш детальну інформацію ви можете знайти тут .

Примітка1: Я бачив, як хтось говорив про встановлення python-dev і це libmysqlclient-devтакож допомогло, однак я не знаю, чи доступні ці пакунки на Mac OS.

Примітка2. Також не забудьте спробувати запустити команди як корінь.

Я отримав свої відповіді (крім мого мозку) з цих місць (можливо, ви могли їх поглянути, щоб побачити, чи це допоможе): 1 , 2 , 3 , 4 .

Я сподівався, що допоможу, і буду радий дізнатися, чи працює щось це чи ні. Удачі.


2
Чудове пояснення, FWIW на Linux, установка python-dev та libmysqlclient-dev, як правило, єдине, що потрібно зробити, щоб він працював, але на OSX все, що мені потрібно було зробити, це оновити свою ванну. Я вірю, що в Linux можна встановити mysql, не отримуючи dep python для mysql-python, якщо ви не встановите вказані бібліотеки dev. (Зробив цю помилку так багато разів, хаха)
Іен Дункан

1
Після оновлення до Yosemite тепер він також скаржиться на відсутність "stdio.h". Ви можете це виправити, перейшовши сюди: stackoverflow.com/questions/19580758/…
Mihai Oprea

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
Мені довелося вказати на встановлення export PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
пива

6

Я налагоджував цю проблему назавжди - 3 години 17 хвилин. Що мене особливо дратувало, це те, що у мене вже був встановлений sql у моїй системі за допомогою попередньої роботи Uni, але pip / pip3 не розпізнавав це. Ці теми вище та багато інших, за якими я шукав Інтернет, були корисними для усунення проблеми, але насправді не вирішили справи.

ВІДПОВІДЬ

Pip шукає файли mysql в каталозі Homebrew, який розташований відносно Macintosh HD @

/usr/local/Cellar/

тож я виявив, що для цього потрібно внести кілька змін

крок 1: Завантажте MySql, якщо цього ще не зроблено https://dev.mysql.com/downloads/

Крок 2: Знайдіть його відносно Macintosh HD та CD

/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


3

Я запускаю Python 3.6 на MacOS Catalina. Моя проблема полягала в тому, що я намагався встановити, mysqlclient==1.4.2.post1і він продовжує кидати mysql_config не знайшов помилку.

Це кроки, які я вжив для вирішення проблеми.

  1. Встановіть mysql-connector-c за допомогою brew (якщо у вас вже є mysql, спочатку встановіть від’єднання 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"

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

2

Також це трапляється, коли я встановлював mysqlclient,

$ pip install mysqlclient

Як сказав користувач3429036,

$ brew install mysql

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і вуаля !
Ніл С. Обремський

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"

0

Проблема в моєму випадку полягала в тому, що я запускав команду всередині віртуального середовища python, і у неї не було шляху до / usr / local / mysql / bin, хоча я помістив її у файл .bash_profile. Щойно експортування контуру у віртуальне середовище працювало для мене.

Для вашої інформації sql_config знаходиться всередині каталогу сміття.


-1

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

наступний крок:

  1. експортувати PATH = $ PATH: / usr / local / mysql / bin
  2. pip встановити MySQL-python == 1.2.5
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.