Mac OS X - EnvironmentError: mysql_config not found


121

Trước hết, vâng, tôi đã thấy điều này:

pip cài đặt mysql-python không thành công với EnvironmentError: không tìm thấy mysql_config

Vấn đề

Tôi đang cố gắng sử dụng Django trong một dự án Google App Engine. Tuy nhiên, tôi đã không thể bắt đầu vì máy chủ không khởi động đúng cách do:

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

Tôi đã thực hiện một số nghiên cứu và tất cả đều chỉ ra rằng phải cài đặt Mysql-python, dường như nó không có trên hệ thống của tôi. Tôi thực sự đã thử gỡ cài đặt nó và nhận được điều này:

Cannot uninstall requirement mysql-python, not installed

Bất cứ khi nào tôi thực sự cố gắng cài đặt qua:

sudo pip install MySQL-python

Tôi gặp lỗi khi nêu:

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

Tôi đã thử chạy:

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

nhưng điều đó dường như không hữu ích, vì tôi đã chạy lại lệnh cài đặt và nó vẫn không thành công.

Có ý kiến ​​gì không?

Xin lưu ý rằng tôi không ở trong virtualenv.


Bạn luôn có thể truy cập tệp nâng cao EnvironmentErrorvà in thêm thông tin gỡ lỗi hữu ích, như os.getcwd(). bạn cũng có thể thêm một pdb.set_trace()và tìm ra mọi thứ.
ealfonso

Câu trả lời:


340

Được rồi, trước hết, hãy để tôi kiểm tra xem tôi có ở cùng trang với bạn không:

  • Bạn đã cài đặt python
  • Bạn đã làm brew install mysql
  • Bạn đã làm export PATH=$PATH:/usr/local/mysql/bin
  • Và cuối cùng, bạn đã làm pip install MySQL-Python(hoặc pip3 install mysqlclientnếu sử dụng python 3)

Nếu bạn đã thực hiện tất cả các bước đó theo cùng một thứ tự và bạn vẫn gặp lỗi, hãy đọc đến phần cuối, tuy nhiên, nếu bạn không làm theo các bước chính xác này, hãy thử làm theo chúng ngay từ đầu.

Vì vậy, bạn đã làm theo các bước và vẫn gặp lỗi, tốt, bạn có thể thử một số cách sau:

  1. Hãy thử chạy which mysql_configtừ bash. Nó có thể sẽ không được tìm thấy. Đó là lý do tại sao bản dựng cũng không tìm thấy nó. Thử chạy locate mysql_configvà xem có gì quay lại không. Đường dẫn đến tệp nhị phân này cần phải nằm trong biến môi trường $ PATH của trình bao của bạn hoặc nó cần phải được rõ ràng trong tệp setup.py cho mô-đun giả sử rằng nó đang tìm kiếm ở một nơi cụ thể nào đó cho tệp đó.

  2. Thay vì sử dụng MySQL-Python, hãy thử sử dụng 'mysql-connector-python', nó có thể được cài đặt bằng cách sử dụng pip install mysql-connector-python. Thông tin thêm về điều này có thể được tìm thấy ở đâyở đây .

  3. Tìm vị trí của 'mysql / bin', 'mysql_config' và 'MySQL-Python' theo cách thủ công và thêm tất cả những thứ này vào biến môi trường $ PATH.

  4. Nếu tất cả các bước trên thất bại, thì bạn có thể thử cài đặt 'mysql' sử dụng MacPorts, trong trường hợp tập tin 'mysql_config' sẽ thực sự được gọi là 'mysql_config5', và trong trường hợp này, bạn sẽ phải làm điều này sau khi cài đặt: export PATH=$PATH:/opt/local/lib/mysql5/bin. Bạn có thể tìm thêm thông tin chi tiết tại đây .

Lưu ý1: Tôi đã thấy một số người nói rằng cài đặt python-devlibmysqlclient-devcũng có ích, tuy nhiên tôi không biết liệu các gói này có sẵn trên Mac OS hay không.

Lưu ý 2: Ngoài ra, hãy đảm bảo thử chạy các lệnh dưới quyền root.

Tôi đã nhận được câu trả lời từ (ngoài bộ não của tôi) những nơi này (có thể bạn có thể xem qua chúng, để xem nó có giúp ích gì không): 1 , 2 , 3 , 4 .

Tôi hy vọng tôi đã giúp và sẽ rất vui khi biết liệu điều này có hiệu quả hay không. Chúc may mắn.


2
Giải thích tuyệt vời, FWIW trên linux, cài đặt python-dev và libmysqlclient-dev thường là điều duy nhất cần làm để nó hoạt động, nhưng trên osx, tất cả những gì tôi cần làm là cập nhật bath của mình. Tôi tin rằng trên linux, bạn có thể cài đặt mysql mà không cần lấy mã lệnh python cho mysql-python nếu bạn không cài đặt các thư viện nhà phát triển đã chỉ ra. (Made rằng sai lầm sooo nhiều lần, lol)
Iain Duncan

1
Sau khi nâng cấp lên Yosemite, nó cũng phàn nàn về việc thiếu "stdio.h". Bạn có thể khắc phục điều đó bằng cách truy cập vào đây: stackoverflow.com/questions/19580758/…
Mihai Oprea

4
Đang chạy đã brew install mysqlsửa nó. Ngoài ra, lệnh which mysql-confignày không hoạt động với tôi, nhưng which mysql_configđã làm.
Chad

1
Tôi cũng phải thêm dòng này vào .bash_profiletệp của mình :export DYLD_LIBRARY_PATH=/usr/local/Cellar/mysql/5.7.9/lib/
JeffThompson

2
Tôi đã đến thời điểm để lắp đặt biaexport PATH=$PATH:/usr/local/Cellar/mysql/5.7.20/bin
Climbs_lika_Spyder

6

Tôi đã gỡ lỗi vấn đề này mãi mãi - 3 giờ 17 phút. Điều đặc biệt khiến tôi khó chịu là tôi đã cài đặt sql trên hệ thống của mình thông qua lần làm việc trước đó nhưng pip / pip3 không nhận ra nó. Những chủ đề ở trên và nhiều chủ đề khác mà tôi đã tìm kiếm trên internet rất hữu ích trong việc làm sáng tỏ vấn đề nhưng không thực sự giải quyết được mọi thứ.

CÂU TRẢ LỜI

Pip đang tìm kiếm các mã nhị phân mysql trong Homebrew Directory nằm liên quan đến Macintosh HD @

/usr/local/Cellar/

vì vậy tôi thấy rằng điều này yêu cầu bạn thực hiện một số thay đổi

Bước 1: Tải xuống MySql nếu chưa thực hiện https://dev.mysql.com/downloads/

Bước 2: Định vị nó liên quan đến Macintosh HD và cd

/usr/local/mysql/bin

Bước 3: Khi có thiết bị đầu cuối mở và sử dụng trình soạn thảo văn bản mà bạn lựa chọn - bản thân tôi là một chàng trai tân học nên tôi đã gõ (không tự động đi kèm với Mac ... một câu chuyện khác cho ngày khác)

nvim mysql_config

Bước 4: Bạn sẽ thấy ở khoảng dòng 112

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

Thay đổi thành

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

* bạn sẽ nhận thấy rằng tệp này có quyền truy cập chỉ đọc, vì vậy nếu bạn sử dụng vim hoặc neovim

:w !sudo tee %

Bước 5: Vào thư mục chính và chỉnh sửa tệp .bash_profile

cd ~

Sau đó

nvim .bash_profile

và thêm

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

vào tệp rồi lưu

Bước 6: Liên quan đến Macintosh HD định vị đường dẫn và thêm vào đó

cd /private/etc/

sau đó

nvim paths

và thêm

/usr/local/mysql/bin

* bạn sẽ lại nhận thấy rằng tệp này có quyền truy cập chỉ đọc, vì vậy nếu bạn sử dụng vim hoặc neovim

:w !sudo tee % 

sau đó

cd ~

sau đó làm mới thiết bị đầu cuối với các thay đổi của bạn bằng cách chạy

source .bash_profile

Cuối cùng

pip3 install mysqlclient

Và Viola. Hãy nhớ rằng đó là một sự rung cảm.


libsBên trong của tôi mysql_configđã được mô tả trong phần "Thay đổi thành". Tuy nhiên, việc thêm PATH để private/etcgiúp cho phép cài đặt toàn cầu của mysqlclientđiều đó đã không thành công trước đó.
martin-martin

5

Nếu bạn không muốn cài đặt mysql đầy đủ, chúng tôi có thể khắc phục điều này bằng cách cài đặt mysqlclient brew install mysqlclient Sau khi cmd hoàn tất, nó sẽ yêu cầu thêm dòng bên dưới vào ~/.bash_profile:

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

Đóng thiết bị đầu cuối và khởi động thiết bị đầu cuối mới và tiếp tục với pip install mysqlclient


3

Tôi đang chạy Python 3.6 trên MacOS Catalina. Vấn đề của tôi là tôi đã cố gắng cài đặt mysqlclient==1.4.2.post1và nó liên tục gặp lỗi không tìm thấy mysql_config.

Đây là các bước tôi đã thực hiện để giải quyết vấn đề.

  1. Cài đặt mysql-connector-c bằng brew (nếu bạn đã cài đặt mysql thì hãy hủy liên kết trước brew unlink mysql) -brew install mysql-connector-c
  2. Mở mysql_config và chỉnh sửa tệp xung quanh dòng 112
# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl - điều này sẽ cung cấp cho bạn thêm thông tin về những việc cần làm khi đưa openssl vào PATH
  2. liên quan đến bước 3, bạn cần làm điều này để đặt openssl trong PATH - echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
  3. để trình biên dịch tìm openssl - export LDFLAGS="-L/usr/local/opt/openssl/lib"
  4. để trình biên dịch tìm openssl - export CPPFLAGS="-I/usr/local/opt/openssl/include"

Cảm ơn bạn! Tôi đã thử rất nhiều thứ và phương pháp của bạn đã hiệu quả với tôi.
Yagimutsu

2

Điều này cũng xảy ra khi tôi cài đặt mysqlclient,

$ pip install mysqlclient

Như người dùng3429036 đã nói,

$ brew install mysql

1

Câu trả lời này dành cho những người dùng MacOS không cài đặt từ brewmà là từ chính thức .dmg/.pkg. Trình cài đặt đó không thể chỉnh sửa của bạn PATH, khiến mọi thứ xảy ra ngoài hộp:

  1. Tất cả các lệnh MySQL thích mysql, mysqladmin, mysql_config, vv không thể được tìm thấy, và kết quả là:
  2. các "MySQL Preference Pane" không xuất hiện trong System Preferences, và
  3. bạn không thể cài đặt bất kỳ API nào giao tiếp với MySQL, bao gồm mysqlclient

Những gì bạn phải làm là thêm binthư mục MySQL (thường là /usr/local/mysql/bintrong của bạn PATHbằng cách thêm dòng này vào~/.bash_profile tệp :

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

Sau đó, bạn nên tải lại ~/.bash_profile để thay đổi có hiệu lực trong phiên Terminal hiện tại của bạn:

source ~/.bash_profile

Trước khi cài đặt mysqlclientTuy nhiên, , bạn cần chấp nhận giấy phép XcodeBuild:

sudo xcodebuild -license

Làm theo hướng dẫn của họ để đăng ký gia đình của bạn, sau đó bạn sẽ có thể cài đặt mysqlclient mà không gặp sự cố:

pip install mysqlclient

Sau khi cài đặt, bạn phải làm một việc nữa để sửa lỗi thời gian chạy có MySQL ( Không tìm thấy Thư viện độnglibmysqlclient.dylib ), bằng cách thêm dòng này vào đường dẫn thư viện động hệ thống của bạn:

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


Tôi đã thấy câu trả lời của bạn sau khi tìm mã nhị phân trên đĩa bằng cách chạy sudo lsof -i :3306để xem PID của quá trình MySQL đang hoạt động và sau đó chạy sudo -P <pid>trên đó để xem các tệp đang mở của nó. Điều này đến với /usr/local/mysql-8.0.18-macos10.14-x86_64/bincái mà tôi đã thêm vào $PATHthì đấy !
Neil C. Obremski

0

Nếu bạn đã cài đặt mysql bằng Homebrew bằng cách chỉ định một phiên bản thì mysql_config sẽ có mặt ở đây. - /usr/local/Cellar/mysql@5.6/5.6.47/bin

bạn có thể tìm ra con đường của bin sql bằng cách sử dụng lệnh ls trong / usr / / local thư mục

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

Thêm đường dẫn đến hồ sơ bash như thế này.

nano ~/.bash_profile

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

0

Vấn đề trong trường hợp của tôi là tôi đang chạy lệnh bên trong môi trường ảo python và nó không có đường dẫn đến / usr / local / mysql / bin mặc dù tôi đã đặt nó trong tệp .bash_profile. Tôi chỉ xuất đường dẫn trong env ảo.

Đối với thông tin của bạn, sql_config nằm bên trong thư mục bin.


-1

Cài đặt brew hoặc apt-get cũng không dễ dàng đối với tôi vì vậy tôi đã tải xuống mysql qua: https://dev.mysql.com/downloads/connector/python/ , đã cài đặt nó. Vì vậy, tôi có thể tìm thấy mysql_config trong thư mục này: / usr / local / mysql / bin

bước tiếp theo là:

  1. xuất PATH = $ PATH: / usr / local / mysql / bin
  2. pip cài đặt MySQL-python == 1.2.5
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.