MacOS 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และในกรณีนี้คุณจะต้องทำเช่นนี้หลังจากติดตั้ง: คุณสามารถค้นหารายละเอียดเพิ่มเติมได้ที่นี่

Note1: เคยเห็นบางคนบอกว่าติดตั้งpython-devและlibmysqlclient-devยังช่วยได้ แต่ฉันไม่รู้ว่าแพ็คเกจเหล่านี้มีอยู่ใน Mac OS หรือไม่

Note2: นอกจากนี้อย่าลืมลองรันคำสั่งในฐานะรูท

ผมได้คำตอบของฉันจาก (นอกเหนือจากสมองของฉัน) สถานที่เหล่านี้ (บางทีคุณอาจจะต้องดูที่พวกเขาเพื่อดูว่ามันจะช่วย): 1 , 2 , 3 , 4

ฉันหวังว่าฉันจะช่วยได้และยินดีที่จะทราบว่าสิ่งนี้ได้ผลหรือไม่ โชคดี.


2
คำอธิบายที่ยอดเยี่ยม FWIW บน linux การติดตั้ง python-dev และ libmysqlclient-dev มักเป็นสิ่งเดียวที่ต้องทำเพื่อให้ใช้งานได้ แต่ใน osx สิ่งที่ฉันต้องทำคืออัปเดต bath ฉันเชื่อว่าบน linux คุณสามารถติดตั้ง mysql ได้โดยไม่ต้องรับ python deps สำหรับ mysql-python หากคุณไม่ได้ติดตั้งไลบรารี dev ที่ระบุ (ทำผิดหลายครั้งฮ่า ๆ )
Iain Duncan

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
Climbs_lika_Spyder

6

ฉันแก้ไขปัญหานี้มาตลอด - 3 ชั่วโมง 17 นาที สิ่งที่ทำให้ฉันรำคาญเป็นพิเศษคือฉันได้ติดตั้ง sql ในระบบของฉันแล้วผ่านการทำงานแบบ uni ก่อนหน้านี้ แต่ pip / pip3 ไม่รู้จัก หัวข้อเหล่านี้ข้างต้นและอื่น ๆ อีกมากมายที่ฉันค้นหาในอินเทอร์เน็ตมีประโยชน์ในการคลี่คลายปัญหา แต่ไม่ได้แก้ปัญหาได้จริง

ตอบ

Pip กำลังมองหาไบนารี mysql ใน Homebrew Directory ซึ่งอยู่สัมพันธ์กับ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 not found

นี่คือขั้นตอนที่ฉันดำเนินการเพื่อแก้ไขปัญหา

  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"

ขอบคุณ! ฉันลองทำหลาย ๆ อย่างและวิธีการของคุณก็ได้ผลสำหรับฉัน
Yagimutsu

2

สิ่งนี้เกิดขึ้นเมื่อฉันติดตั้ง mysqlclient

$ pip install mysqlclient

ดังที่ user3429036 กล่าวไว้ว่า

$ 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เพื่อให้การเปลี่ยนแปลงมีผลในเซสชัน Terminal ปัจจุบันของคุณ:

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และvoila !
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

เพิ่มเส้นทางไปยังโปรไฟล์ทุบตีเช่นนี้

nano ~/.bash_profile

export PATH="/usr/local/Cellar/mysql@5.6/5.6.47/bin:$PATH"

0

ปัญหาในกรณีของฉันคือฉันรันคำสั่งภายในสภาพแวดล้อมเสมือน python และไม่มีพา ธ ไปยัง/ usr / local / mysql / binแม้ว่าฉันจะใส่ไว้ในไฟล์. bash_profile เพียงแค่ส่งออกเส้นทางใน env เสมือนก็ใช้ได้ผลสำหรับฉัน

สำหรับข้อมูลของคุณ sql_config อยู่ในไดเร็กทอรี bin


-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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.