Không tìm thấy mysql_config khi cài đặt giao diện python mysqldb


478

Tôi đang cố gắng để có được một tập lệnh Python để chạy trên máy chủ linux mà tôi đã kết nối qua ssh. Kịch bản sử dụng mysqldb. Tôi có tất cả các thành phần khác mà tôi cần, nhưng khi tôi cố gắng cài đặt mySQLdb thông qua setuptools như vậy:,

python setup.py install

Tôi nhận được báo cáo lỗi sau đây liên quan đến mysql_configlệnh.

sh: mysql_config: command not found
Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    metadata, options = get_config()
  File "/usr/lib/python2.5/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config
    libs = mysql_config("libs_r")
  File "/usr/lib/python2.5/MySQL-python-1.2.3/setup_posix.py", line 24, in mysql_config
    raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found

Có ai khác gặp phải lỗi này không và nếu có thì bạn đã giải quyết nó như thế nào / tôi có thể làm gì để cài đặt thành công mysqldb?


1
Hi @ user904542 - Tôi đã thay đổi nội dung câu hỏi của bạn để hy vọng làm cho nó một chút ngắn gọn hơn và giúp bạn có được một số câu trả lời :) Nếu bạn không thích nó, hoặc muốn cung cấp thêm chi tiết, có một liên kết chỉnh sửa trực thuộc câu hỏi của bạn mà bạn có thể sử dụng để quay lại bản gốc của bạn hoặc thêm vào những thay đổi tôi đã thực hiện.

3
Tôi gặp vấn đề chính xác như vậy, vì tôi đã cài đặt mysql từ nguồn. nếu bạn cũng vậy, chỉ cần chạy một cái gì đó như thế này để làm cho mysql_config có sẵn: sudo ln -s / usr / local / mysql / bin / mysql_config / usr / bin / mysql_config hoặc thêm / usr / local / mysql / bin / vào đường dẫn của bạn.
Thị Dương Nguyên

Nếu bạn đã cài đặt mysql, nhận xét trên của Thi Duong Nguyen sẽ giải quyết vấn đề bằng cách tạo một liên kết tượng trưng đến tệp mysql_config trong thư mục / usr / bin, nằm trong đường dẫn mà python sẽ tìm kiếm.
Alex Boschmans

2
chỉ cần làm điều này ------------- apt-get install python-mysqldb
Shadow0359

@AlexBoschmans symlinking /usr/binlà sai, đó là usr/local/my...xem câu trả lời của Thi.
Timo

Câu trả lời:


701

mySQLdb là một giao diện python cho mysql, nhưng bản thân nó không phải là mysql. Và rõ ràng myQuerydb cần lệnh 'mysql_config', vì vậy bạn cần cài đặt nó trước.

Bạn có thể xác nhận rằng bạn đã hoặc không tự cài đặt mysql bằng cách chạy "mysql" từ trình bao không? Điều đó sẽ cung cấp cho bạn một phản hồi khác ngoài "mysql: lệnh không tìm thấy".

Mà phân phối Linux bạn đang sử dụng? Mysql được đóng gói sẵn cho hầu hết các bản phân phối linux. Ví dụ, đối với debian / ubfox, việc cài đặt mysql dễ dàng như

sudo apt-get install mysql-server

mysql-config nằm trong một gói khác, có thể được cài đặt từ (một lần nữa, giả sử debian / ubfox):

sudo apt-get install libmysqlclient-dev

nếu bạn đang sử dụng mariadb, hãy thay thế mys mys, sau đó chạy

sudo apt-get install libmariadbclient-dev

Tham khảo: https://github.com/JudgeGirl/Judge-sender/issues/4#issuecomment-186542797


1
Đọc danh sách gói ... Xong Xây dựng cây phụ thuộc Đọc thông tin trạng thái ... Xong Lưu ý, chọn libmysqlclient15-dev thay vì libmysqlclient-dev Một số gói không thể được cài đặt. Điều này có thể có nghĩa là bạn đã yêu cầu một tình huống không thể hoặc nếu bạn đang sử dụng bản phân phối không ổn định mà một số gói yêu cầu chưa được tạo hoặc đã được chuyển ra khỏi In chuẩn. Các thông tin sau có thể giúp giải quyết tình huống: Các gói sau có các phụ thuộc chưa được đáp ứng: libmysqlclient15-dev: Depends: zlib1g-dev nhưng nó sẽ không được cài đặt E: Gói bị hỏng
user904542

2
Có nên 'sudo apt-get install mysql' là 'sudo apt-get install mysql-server'?
Kohanz

4
Lưu ý rằng đối với Debian, nó sudo apt-get install mysql-serversudo apt-get install mysql-client
Marc Juchli

2
Cuối cùng chúng ta có thể thừa nhận rằng 'pip' là một thất bại khổng lồ không? Các lỗi như thế này là một nỗi đau, và chúng dường như xảy ra với phần lớn các gói. Python rất cần một giải pháp mới để quản lý gói.
Eddie Sullivan

3
Đối với tôi trên Debian, đó là libmysqlclient-dev. Trong thực tế, tôi đã cài đặt cả libmariadbclient-dev libmysqlclient-dev
mirek

187

Tôi đã cài đặt python-mysqltrên Ubuntu 12.04 bằng

pip install mysql-python

Đầu tiên tôi có cùng một vấn đề:

Not Found "mysql_config"

Điều này làm việc cho tôi

$ sudo apt-get install libmysqlclient-dev

Sau đó, tôi đã có vấn đề này:

...
_mysql.c:29:20: error fatal: Python.h: No existe el archivo o el directorio

compilación terminada.

error: command 'gcc' failed with exit status 1

Sau đó tôi đã thử với

apt-get install python-dev

Và sau đó tôi đã được hạnh phúc :)

pip install mysql-python
    Installing collected packages: mysql-python
      Running setup.py install for mysql-python
        building '_mysql' extension
        gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,4,'beta',4) -D__version__=1.2.4b4 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -DBIG_JOINS=1 -fno-strict-aliasing -g
        In file included from _mysql.c:44:0:
        /usr/include/mysql/my_config.h:422:0: aviso: se redefinió "HAVE_WCSCOLL" [activado por defecto]
        /usr/include/python2.7/pyconfig.h:890:0: nota: esta es la ubicación de la definición previa
        gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib/x86_64-linux-gnu -lmysqlclient_r -lpthread -lz -lm -lrt -ldl -o build/lib.linux-x86_64-2.7/_mysql.so

Successfully installed mysql-python
Cleaning up...

1
Hoạt động quá trên openSUSE, trong đó "libmysqlclient-dev" trở thành "libmysqlclient-devel". Bây giờ gói pip cài đặt tốt. Cảm ơn.
pbarill

Cảm ơn! Làm việc quá trên Ubuntu 14.04.1 LTS
Krasimir

cài đặt tiêu đề dev python đã giải quyết lỗi Python.h bị thiếu. Cảm ơn.
Natus đã vẽ

3
nếu sử dụng python3.x, hãy thử với apt-get install python3-dev.
Legolas Bloom

Điều này không hiệu quả với tôi vào ngày 14.04 - "E: Gói 'python-dev' không có ứng cử viên cài đặt"
Rene Wooller

46

(Cụ thể cho Mac OS X)

Tôi đã thử rất nhiều thứ, nhưng những bộ lệnh này cuối cùng cũng có tác dụng với tôi.

  1. Tải về mysql
    brew install mysql
  2. brew unlink mysql
  3. brew install mysql-connector-c
  4. Thêm thư mục bin mysql vào PATH
    export PATH=/usr/local/Cellar/mysql/8.0.11/bin:$PATH
  5. mkdir /usr/local/Cellar/lib/
  6. Tạo một liên kết tượng trưng
    sudo ln -s /usr/local/Cellar/mysql/8.0.11/lib/libmysqlclient.21.dylib /usr/local/Cellar/lib/libmysqlclient.21.dylib
  7. brew reinstall openssl( nguồn )
  8. Cuối cùng, cài đặt mysql-client
    LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/ pip install mysqlclient

Cập nhật: Trong trường hợp điều này không hoạt động, @vinyll đề nghị chạy brew link mysqltrước bước 8.


2
Chỉ cần áp dụng bước 1-4 rồi làm việc. cảm ơn!
kujiy

Đối với Bước 4, sử dụng brew info mysqlđể có được đường dẫn thực tế / chính xác đến cài đặt mysql. Sau đó, để PATHthay đổi được duy trì, hãy thực hiện export PATH..trong ~ / .bash_profile của bạn.
Gino Mempin

bước 1-4 với brew link --overwrite mysql-connector-ccác tác phẩm trên máy Mac của tôi
Hunger

Cuối cùng, nó hoạt động trên Catalina của tôi. Sử dụng chỉ định ssl mở là rất quan trọng.
Hạnh phúc hơn

4
Tôi đã phải làm một brew link mysqlbước trước bước 8 để chạy nó.
vinyll

37

Trên Red Hat tôi phải làm

sudo yum install mysql-devel gcc gcc-devel python-devel
sudo easy_install mysql-python

Sau đó, nó làm việc.


3
Làm việc cho tôi trên CentOS 7:yum install MySQL-python
hudolejev

2
Nếu bạn cần cài đặt MySQL-pythondưới dạng gói Python hoặc đang sử dụng virtualenv, điều này có thể giúp : yum install mysql-devel; venv/bin/pip install MySQL-python.
hudolejev

2
Nếu bạn sử dụng MariaDB trên CentOS 7, hãy chạy sudo yum install mariadb-develtrước, sau đó bạn có thể cài đặt pip install mysqlclient
mysqlclient

bạn đã nhận được vòng quay gcc-devel từ đâu?
Fayaz

yum install mysql-develCentos 8
Diego Andrés Díaz Espinoza

33

Phần dưới đây hoạt động với tôi trên Ubuntu 12.04 LTS:

apt-get install libmysqlclient-dev python-dev

Tất cả mặc dù nó hoạt động, tôi vẫn tiếp tục làm như sau:

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

27

Tôi đã gặp lỗi tương tự trong khi cố gắng cài đặt mysql-python.

Đây là cách tôi sửa nó.

sudo PATH=/usr/local/mysql/bin/:$PATH pip install mysql-python

Vấn đề là trình cài đặt không thể tìm thấy mysql_config trong đường dẫn mặc định. Bây giờ nó có thể .. và nó đã làm việc ..

 15 warnings generated.
    clang -bundle -undefined dynamic_lookup -Wl,-F. build/temp.macosx-10.8-intel-2.7/_mysql.o -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm -lmygcc -o build/lib.macosx-10.8-intel-2.7/_mysql.so -arch x86_64

Successfully installed mysql-python
Cleaning up...

Hi vọng điêu nay co ich.

Cảm ơn.


Tôi gặp vấn đề tương tự khi cài đặt MySQL cục bộ trên máy Mac chạy OSX 10.9.4 (Mavericks). Giải pháp này làm việc cho tôi là tốt.
Deepend

20

Tôi đã khắc phục sự cố này bằng các bước sau:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo python setup.py install

1
Khi chạy> = Debian Stretch, hãy đảm bảo cài đặt default-libmysqlclient-dev, vì libmysqlclient-devgói thông thường không có ứng cử viên cài đặt.
Bono

19

Các lệnh (mysql quá) mPATH có thể bị thiếu.

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


11

Bước 1: - Cài đặt Python3 & Python3-dev Cả

sudo apt-get install python3 python3-dev

Bước 2: - Cài đặt Trình kết nối Python & Mysql

sudo apt-get install libmysqlclient-dev

Bước 3: - Cài đặt máy khách mysthon python

sudo apt-get install mysqlclient

Điều này sẽ giải quyết vấn đề của bạn


Bước 2 đã sửa lỗi này cho tôi.
Saltchicken

Điều này đã khắc phục vấn đề của tôi đã làm tôi thất vọng trong 3 giờ .. Cảm ơn bạn rất nhiều !!!
Yeojin

10

Nếu bạn đang sử dụng macOS và đã cài đặt mysql@5.7 thông qua cài đặt brew:

  1. brew install mysql-connector-c
  2. brew unlink mysql@5.7
  3. brew link --overwrite --dry-run mysql@5.7 đầu tiên, để xem những gì liên kết tượng trưng được ghi đè
  4. brew link --overwrite --force mysql@5.7 để thực sự ghi đè lên các liên kết tượng trưng liên quan đến mysql với mysql@5.7
  5. pip install mysqlclient

9

Tôi đã sửa nó bằng cách cài đặt libmysqlclient:

sudo apt-get install libmysqlclient16-dev

9

Các MySQL-pythongói phần mềm được sử dụng mysql_configlệnh để tìm hiểu về mysqlcấu hình trên máy chủ của bạn. Máy chủ của bạn không cómysql_config lệnh.

Gói thư viện phát triển MySQL (MySQL-devel-xxx) từ dev.mysql.com cung cấp lệnh này và các thư viện cần thiết cho gói MySQL-python. Các MySQL-develgói được tìm thấy trong khu vực máy chủ cộng đồng tải về. Tên gói thư viện phát triển MySQL bắt đầu bằng MySQL-develvà thay đổi dựa trên phiên bản MySQL và nền tảng linux (ví dụ MySQL-devel-5.5.24-1.linux2.6.x86_64.rpm:)

Lưu ý rằng bạn không cần phải cài đặt máy chủ mysql.


8

Gói libmysqlclient-dev không được dùng nữa, vì vậy hãy sử dụng lệnh dưới đây để sửa nó.

Gói libmysqlclient-dev không có sẵn, nhưng được gọi bằng gói khác. Điều này có thể có nghĩa là gói bị thiếu, đã bị lỗi thời hoặc chỉ có sẵn từ một nguồn khác

sudo apt-get install default-libmysqlclient-dev

6

Trong centos 7, điều này làm việc cho tôi:

yum install mariadb-devel
pip install mysqlclient

5

Trên máy Fedora 23 của tôi, tôi phải chạy như sau:

sudo dnf install mysql-devel


4

Tôi nghĩ rằng, các dòng sau có thể được thực hiện trên thiết bị đầu cuối

 sudo ln -s /usr/local/zend/mysql/bin/mysql_config /usr/sbin/

Thư mục mysql_config này dành cho máy chủ zend trên MacOSx. Bạn có thể làm điều đó cho linux như các dòng sau

sudo ln -s /usr/local/mysql/bin/mysql_config /usr/sbin/

Đây là thư mục mysql linux mặc định.


4

Tôi đã có vấn đề này và giải quyết nếu bằng cách thêm một liên kết tượng trưng vào mysql_config.

Tôi đã cài đặt mysql với homebrew và thấy điều này trong đầu ra.

Error: The `brew link` step did not complete successfully

Tùy thuộc vào cách bạn có mysqlnó sẽ ở những nơi khác nhau. Trong trường hợp của tôi /usr/local/Cellar/mysql
Một khi bạn biết nó ở đâu, bạn sẽ có thể tạo một liên kết tượng trưng đến nơi con trăn đang tìm kiếm nó. /usr/local/mysql

Điều này làm việc cho tôi.

ln -s /usr/local/Cellar/mysql/<< VERSION >>/bin/mysql_config   /usr/local/mysql/bin/mysql_config

4

Tôi đã từng gặp vấn đề tương tự. Tôi đã giải quyết nó bằng cách làm theo hướng dẫn này để cài đặt Python với python3-dev trên Ubuntu 16.04:

sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get install -y python3-pip
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

Và bây giờ bạn có thể thiết lập môi trường ảo của mình:

sudo apt-get install -y python3-venv
pyvenv my_env
source my_env/bin/activate

3

Bạn cần cài đặt gói python-dev:

sudo apt-get install python-dev

2

sudo apt-get cài đặt python-mysqldb

Trăn 2.5? Có vẻ như bạn đang sử dụng phiên bản Ubuntu Server rất cũ (Hardy 8.04?) - vui lòng xác nhận phiên bản Linux nào mà máy chủ sử dụng.

tìm kiếm python-mysql trên cơ sở dữ liệu gói ubfox

Một số thông tin bổ sung:

Từ README của mysql-python -

Red Hat Linux .............

MySQL-python được đóng gói sẵn trong Red Hat Linux 7.x và mới hơn. Điều này bao gồm Fedora Core và Red Hat Enterprise Linux. Bạn cũng có thể xây dựng các gói RPM của riêng mình như được mô tả ở trên.

Debian GNU / Linux ................

Đóng gói là python-mysqldb_ ::

# apt-get install python-mysqldb

Hoặc sử dụng Synaptic.

.. _ python-mysqldb: http://packages.debian.org/python-mysqldb

Ubuntu ......

Tương tự như với Debian.

Lưu ý: Nếu bạn thực sự đang sử dụng bản phân phối máy chủ cũ hơn Ubuntu 10.04 thì bạn đã hết hỗ trợ chính thức và nên nâng cấp sớm hơn thay vì muộn hơn.


Tôi có thể xác nhận cho Debian 10 sudo apt-get install python-mysqldb
Tedo Vrbanec

Đây là tất cả những gì bạn cần làm: dev.mysql.com/doc/connector-python/en/ Khăn
Abhinandan Dubey

2

Phương pháp này chỉ dành cho những người biết rằng Mysql đã được cài đặt nhưng vẫn không thể tìm thấy mysql_config. Điều này xảy ra nếu cài đặt python không thể tìm thấy mysql_config trong đường dẫn hệ thống của bạn, điều này chủ yếu xảy ra nếu bạn đã thực hiện cài đặt qua Gói Mac .dmg hoặc cài đặt tại một số đường dẫn tùy chỉnh. Cách dễ nhất và được ghi lại bằng MySqlDB là thay đổi trang web.cfg . Tìm mysql_config có thể nằm trong / usr / local / mysql / bin / và thay đổi biến cụ thể mysql_config giống như bên dưới và chạy lại cài đặt. Đừng quên bỏ bình luận bằng cách xóa "#"

Thay đổi dòng dưới đây

"#mysql_config = / usr / local / bin / mysql_config"

đến

"mysql_config = / usr / local / mysql / bin / mysql_config"

tùy thuộc vào đường dẫn trong hệ thống của bạn.

Bằng cách này, tôi đã sử dụng cài đặt python sau khi thay đổi trang web.cfg

sudo / Hệ thống


2

Cho đến nay, tất cả các giải pháp (Linux) đều yêu cầu sudohoặc quyền root để cài đặt. Đây là một giải pháp nếu bạn không có quyền root và không có sudo. (không sudo apt install ...):

  1. Tải xuống tệp .deb của libmysqlclient-dev, ví dụ từ máy nhân bản này
  2. Điều hướng đến tệp đã tải xuống và chạy dpkg -x libmysqlclient-dev_<version tag>.deb .Điều này sẽ trích xuất một thư mục được gọi là usr.
  3. Symlink ./usr/bin/mysql_configđến một nơi nào đó được tìm thấy trên của bạn $PATH:

    ln -s `pwd` /usr/bin/mysql_config FOLDER_IN_YOUR_PATH

  4. Bây giờ nó có thể tìm thấy mysql_config

Đã thử nghiệm trên Ubuntu 18.04.


Cái này có hoạt động trong CentOS 7 không? Giả sử tôi không có quyền truy cập root hoặc dpkg được cài đặt, tôi nên tiếp cận nó như thế nào?
Sohil

Không cần phải root miễn là bạn đang làm việc trong môi trường ảo của riêng bạn
BlackBear

2

Đối với macOS Mojave, cần phải có cấu hình bổ sung, để trình biên dịch tìm openssl bạn có thể cần phải đặt:

export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"

2

Tôi nghĩ rằng cách thuận tiện nhất để giải quyết vấn đề này vào năm 2020 là sử dụng gói python khác. Chúng tôi không cần cài đặt bất kỳ phần mềm nhị phân nào khác.

Thử cái này

pip install mysql-connector-python

và sau đó

import mysql.connector

mydb = mysql.connector.connect(
          host="",
          user="",
          passwd="",
          database=""
          )      
cursor = mydb.cursor( buffered=True)
cursor.execute('show tables;')
cursor.execute('insert into test values (null, "a",10)')
mydb.commit()
mydb.disconnect()


1

Tôi gặp phải vấn đề tương tự, chỉ cần thêm đường dẫn trong đó * mysql_config * cư trú với biến môi trường PATH và nó hoạt động với tôi.


1

sudo apt-get build-dep python-mysqldb sẽ cài đặt tất cả các phụ thuộc để xây dựng gói từ PIP / easy_install


1

Như lỗi thực tế là

gcc ... -I/usr/include/python2.7 ...

_mysql.c:29:20: error: Python.h: No such file or directory

và Nếu bạn không thể cài đặt các gói python-dev hoặc python-devel, bạn có thể tải xuống kho lưu trữ với phiên bản nguồn python cần thiết từ http://hg.python.org/ và đặt các tệp tiêu đề vào thư mục thích hợp để đưa vào


1

Chỉ loại:

$ sudo apt-get install python-dev
$ venv/bin/pip install MySQL-python

Điều này sẽ giải quyết vấn đề này.


3
Nếu bạn gặp lỗi với mysql_config, hãy kết hợp điều này:sudo apt-get install libmysqlclient-dev
Luciano D. Mota

1

Trong CentOS 7, những điều sau đây nên được thực hiện:

#step1:install mysql 
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

#step2:
sudo yum install mysql-devel
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.