Mac OS X - EnvironmentError: mysql_config tidak ditemukan

121

Pertama, ya, saya sudah melihat ini:

pip install mysql-python gagal dengan EnvironmentError: mysql_config tidak ditemukan

Masalah

Saya mencoba menggunakan Django pada proyek Google App Engine. Namun, saya belum dapat memulai karena server gagal memulai dengan benar karena:

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

Saya melakukan penelitian dan semuanya menunjuk pada keharusan menginstal Mysql-python, karena tampaknya itu tidak ada di sistem saya. Saya benar-benar mencoba mencopot pemasangannya dan mendapatkan ini:

Cannot uninstall requirement mysql-python, not installed

Kapan pun saya benar-benar mencoba menginstal melalui:

sudo pip install MySQL-python

Saya mendapatkan kesalahan yang menyatakan:

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

Saya sudah mencoba berlari:

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

tetapi sepertinya tidak membantu, karena saya menjalankan perintah instalasi lagi dan masih gagal.

Ada ide?

Harap dicatat saya tidak dalam virtualenv.

daniel_c05
sumber
Anda selalu dapat membuka file yang menaikkan EnvironmentErrordan mencetak info debug yang lebih berguna, seperti os.getcwd(). Anda juga dapat menambahkan pdb.set_trace()dan mencari tahu.
ealfonso

Jawaban:

340

Oke, baiklah, pertama-tama, izinkan saya memeriksa apakah saya berada di halaman yang sama dengan Anda:

  • Anda menginstal python
  • Kamu melakukannya brew install mysql
  • Kamu melakukannya export PATH=$PATH:/usr/local/mysql/bin
  • Dan akhirnya, Anda melakukannya pip install MySQL-Python(atau pip3 install mysqlclientjika menggunakan python 3)

Jika Anda melakukan semua langkah tersebut dalam urutan yang sama, dan Anda masih mendapatkan kesalahan, baca terus sampai akhir, jika, bagaimanapun, Anda tidak mengikuti langkah-langkah yang tepat, coba ikuti langkah-langkah tersebut dari awal.

Jadi, Anda mengikuti langkah-langkahnya, dan Anda masih mendapatkan kesalahan, nah, ada beberapa hal yang dapat Anda coba:

  1. Coba lari which mysql_configdari bash. Itu mungkin tidak akan ditemukan. Itu sebabnya build juga tidak menemukannya. Coba lari locate mysql_configdan lihat apakah ada yang kembali. Path ke biner ini harus berada di variabel lingkungan $ PATH shell Anda, atau harus secara eksplisit ada di file setup.py untuk modul dengan asumsi itu mencari di beberapa tempat tertentu untuk file itu.

  2. Alih-alih menggunakan MySQL-Python, coba gunakan 'mysql-connector-python', ini dapat diinstal menggunakan pip install mysql-connector-python. Informasi lebih lanjut tentang ini dapat ditemukan di sini dan di sini .

  3. Temukan lokasi 'mysql / bin', 'mysql_config', dan 'MySQL-Python' secara manual, dan tambahkan semua ini ke variabel lingkungan $ PATH.

  4. Jika semua langkah di atas gagal, maka Anda bisa mencoba menginstal 'mysql' menggunakan MacPorts, dalam hal file 'mysql_config' akan benar-benar disebut 'mysql_config5', dan dalam hal ini, Anda harus melakukan hal ini setelah menginstal: export PATH=$PATH:/opt/local/lib/mysql5/bin. Anda dapat menemukan detail selengkapnya di sini .

Note1: Saya telah melihat beberapa orang mengatakan bahwa menginstal python-devdan libmysqlclient-devjuga membantu, namun saya tidak tahu apakah paket ini tersedia di Mac OS.

Note2: Juga, pastikan untuk mencoba menjalankan perintah sebagai root.

Saya mendapat jawaban saya dari (selain otak saya) tempat-tempat ini (mungkin Anda bisa melihatnya, untuk melihat apakah itu akan membantu): 1 , 2 , 3 , 4 .

Saya berharap saya membantu, dan akan senang mengetahui apakah semua ini berhasil, atau tidak. Semoga berhasil.

Vadorequest
sumber
2
Penjelasan yang bagus, FWIW di linux, menginstal python-dev dan libmysqlclient-dev biasanya satu-satunya hal yang perlu dilakukan untuk membuatnya berfungsi, tetapi di osx yang perlu saya lakukan hanyalah memperbarui bath saya. Saya percaya di linux Anda dapat menginstal mysql tanpa mendapatkan deps python untuk mysql-python jika Anda tidak menginstal pustaka dev yang ditunjukkan. (Membuat kesalahan itu berkali-kali, lol)
Iain Duncan
1
Setelah mengupgrade ke Yosemite sekarang juga mengeluh tentang "stdio.h" hilang. Anda dapat memperbaikinya dengan membuka di sini: stackoverflow.com/questions/19580758/…
Mihai Oprea
4
Menjalankan brew install mysqlmemperbaikinya. Juga, perintah which mysql-configini tidak berhasil untuk saya, tetapi which mysql_configberhasil.
Chad
1
Saya juga harus menambahkan baris ini ke .bash_profilefile saya :export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
JeffThompson
2
Saya harus menunjuk ke instalasi brewsexport PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
Climbs_lika_Spyder
6

Saya telah men-debug masalah ini selamanya - 3 jam 17 menit. Yang sangat mengganggu saya adalah saya sudah menginstal sql di sistem saya melalui pekerjaan uni sebelumnya tetapi pip / pip3 tidak mengenalinya. Utas di atas dan banyak utas lainnya yang saya jelajahi di internet sangat membantu dalam menghilangkan masalah tetapi tidak benar-benar menyelesaikan masalah.

MENJAWAB

Pip mencari binari mysql di Direktori Homebrew yang terletak relatif ke Macintosh HD @

/usr/local/Cellar/

jadi menurut saya ini mengharuskan Anda melakukan beberapa perubahan

langkah 1: Unduh MySql jika belum melakukannya https://dev.mysql.com/downloads/

Langkah 2: Cari lokasi relatif terhadap Macintosh HD dan cd

/usr/local/mysql/bin

Langkah 3: Setelah membuka terminal dan menggunakan editor teks pilihan - saya sendiri adalah seorang neovim jadi saya mengetik (tidak secara otomatis datang dengan Mac ... cerita lain untuk hari lain)

nvim mysql_config

Langkah 4: Anda akan melihat kira-kira baris 112

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

Mengubah

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

* Anda akan melihat bahwa file ini memiliki akses hanya-baca jadi jika Anda menggunakan vim atau neovim

:w !sudo tee %

Langkah 5: Buka direktori home dan edit file .bash_profile

cd ~

Kemudian

nvim .bash_profile

dan tambahkan

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

ke file lalu simpan

Langkah 6: relatif terhadap jalur pencarian Macintosh HD dan tambahkan padanya

cd /private/etc/

kemudian

nvim paths

dan tambahkan

/usr/local/mysql/bin

* Anda akan kembali melihat bahwa file ini memiliki akses hanya-baca jadi jika Anda menggunakan vim atau neovim

:w !sudo tee % 

kemudian

cd ~

kemudian segarkan terminal dengan perubahan Anda dengan menjalankan

source .bash_profile

Akhirnya

pip3 install mysqlclient

Dan Viola. Ingat itu getaran.

Trevor James Oluotch
sumber
Bagian libsdalam saya mysql_configsudah seperti yang dijelaskan di bagian "Ubah ke". Namun, menambahkan PATH untuk private/etcmembantu memungkinkan penginstalan global mysqlclientyang sebelumnya gagal.
martin-martin
5

Jika Anda tidak ingin menginstal mysql lengkap, kita dapat memperbaikinya hanya dengan menginstal mysqlclient. brew install mysqlclient Setelah cmd selesai, baris di bawah akan diminta untuk ditambahkan ke ~/.bash_profile:

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

Tutup terminal dan mulai terminal baru dan lanjutkan dengan pip install mysqlclient

Arun
sumber
3

Saya menjalankan Python 3.6 di MacOS Catalina. Masalah saya adalah saya mencoba menginstalmysqlclient==1.4.2.post1 dan terus memunculkan mysql_config kesalahan tidak ditemukan.

Ini adalah langkah-langkah yang saya ambil untuk mengatasi masalah tersebut.

  1. Instal mysql-connector-c menggunakan brew (jika mysql sudah menginstal unlink dulu brew unlink mysql) -brew install mysql-connector-c
  2. Buka mysql_config dan edit file di sekitar baris 112
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - ini akan memberi Anda lebih banyak informasi tentang apa yang perlu dilakukan tentang meletakkan openssl di PATH
  2. sehubungan dengan langkah 3, Anda perlu melakukan ini untuk meletakkan openssl di PATH - echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. bagi penyusun untuk menemukan openssl - export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. bagi penyusun untuk menemukan openssl - export CPPFLAGS="-I/usr/local/opt/openssl/include"
azmirfakkri.dll
sumber
Terima kasih! Saya mencoba banyak hal dan metode Anda berhasil untuk saya.
Yagimutsu
2

Ini juga terjadi ketika saya menginstal mysqlclient,

$ pip install mysqlclient

Seperti kata pengguna3429036,

$ brew install mysql
AndreL
sumber
1

Jawaban ini untuk pengguna MacOS yang tidak menginstal dari brewmelainkan dari resmi .dmg/.pkg. Pemasang itu gagal mengedit Anda PATH, menyebabkan banyak hal keluar dari kotak:

  1. Semua perintah MySQL seperti mysql, mysqladmin,mysql_config , dll tidak dapat ditemukan, dan sebagai hasilnya:
  2. the "MySQL Preference Pane" gagal untuk muncul di System Preferences, dan
  3. Anda tidak dapat menginstal API apa pun yang berkomunikasi dengan MySQL, termasuk mysqlclient

Yang harus Anda lakukan adalah menambahkan binfolder MySQL (biasanya /usr/local/mysql/bindi Anda PATHdengan menambahkan baris ini di ~/.bash_profilefile Anda :

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

Anda kemudian harus memuat ulang ~/.bash_profileagar perubahan diterapkan di sesi Terminal Anda saat ini:

source ~/.bash_profile

mysqlclientNamun, sebelum menginstal , Anda perlu menerima lisensi XcodeBuild:

sudo xcodebuild -license

Ikuti petunjuk mereka untuk keluar dari keluarga Anda, setelah itu Anda dapat menginstal mysqlclienttanpa masalah:

pip install mysqlclient

Setelah menginstal itu, Anda harus melakukan satu hal lagi untuk memperbaiki bug runtime yang dikirimkan bersama MySQL ( Dynamic Library libmysqlclient.dylibnot found ), dengan menambahkan baris ini ke jalur library dinamis sistem Anda:

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

Zhanwen Chen
sumber
Saya melihat jawaban Anda setelah menemukan binari pada disk dengan menjalankan sudo lsof -i :3306untuk melihat PID dari proses MySQL yang aktif dan kemudian menjalankannya sudo -P <pid>untuk melihat file yang terbuka. Ini datang dengan /usr/local/mysql-8.0.18-macos10.14-x86_64/binyang saya tambahkan $PATHdan voila !
Neil C.Obremski
0

Jika Anda telah menginstal mysql menggunakan Homebrew dengan menentukan versi, maka mysql_config akan hadir di sini. - /usr/local/Cellar/[email protected]/5.6.47/bin

Anda dapat menemukan jalur bin sql dengan menggunakan perintah ls di / usr / local / direktori

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

Tambahkan jalur ke profil bash seperti ini.

nano ~/.bash_profile

export PATH="/usr/local/Cellar/[email protected]/5.6.47/bin:$PATH"
mohammed_ayaz
sumber
0

Masalah dalam kasus saya adalah saya menjalankan perintah di dalam lingkungan virtual python dan tidak memiliki jalur ke / usr / local / mysql / bin meskipun saya telah meletakkannya di file .bash_profile. Hanya mengekspor jalur di env virtual yang berhasil untuk saya.

Untuk info Anda sql_config berada di dalam direktori bin.

ac_baz
sumber
-1

Instal brew atau apt-get juga tidak mudah bagi saya jadi saya mendownload mysql melalui: https://dev.mysql.com/downloads/connector/python/ , menginstalnya. Jadi saya dapat menemukan mysql_config di direktori ini: / usr / local / mysql / bin

langkah selanjutnya adalah:

  1. ekspor PATH = $ PATH: / usr / local / mysql / bin
  2. pip instal MySQL-python == 1.2.5
J. Mark
sumber