Mac OS X에 MySQLdb (MySQL에 대한 Python 데이터 액세스 라이브러리)를 설치하는 방법은 무엇입니까?


99

저는 Python 초보자이지만 MySQLdb가 제대로 작동하도록하는 방법을 연구하는 데 하루를 보냈습니다. Google에 따르면 우주에는 PITA가 무엇인지에 대한 수많은 참조가 포함되어 있으며 시대에 뒤쳐진. 이 사이트는 이러한 종류의 문제를 해결하기위한 것이며 향후 솔루션에 대한 참조가 필요하다는 것을 알고 있으므로 질문을하고 제 답변을 제공하고 다른 내용이 표면.

그렇다면 문제는 Mac OS X에서 MySQLdb를 작동 시키는 방법입니다 .

답변:


133

Python3 사용자 를위한 업데이트 :conda install mysqlclient 현재 존재하는 MySQLdb를 사용하는 데 필요한 라이브러리 를 간단히을 사용 하여 설치할 수 있습니다. 다음 SO 질문은 유용한 단서였습니다. Python 3 ImportError : No module named 'ConfigParser' . mysqlclient를 설치하면 mysqlclient, mysql-connector 및 llvmdev가 설치됩니다 (적어도 내 컴퓨터에이 3 개의 라이브러리가 설치됨).

이 문제에 대한 나의 경험담이 있습니다. 문제에 대해 더 나은 경험이 있다면 편집되거나 일반화되는 것을보고 싶을 것입니다. 약간의 SO 마법을 적용하십시오.

참고 : 다음 단락의 주석은 Snow Leopard에 적용되었지만 Lion에는 적용되지 않았으며 64 비트 MySQL이 필요한 것으로 보입니다.

우선, MySQLdb의 작성자 (여전히?)는 여기서 가장 위험한 문제 중 하나는 OS X에 32 비트 버전의 Python이 설치되어 있지만 대부분의 평균 joes (자신 포함)는 64 비트 버전을 설치하기 위해 점프한다고 말합니다. MySQL의. 잘못된 이동 ... 64 비트 버전을 설치 한 경우 제거 ( 여기 에서이 작업에 대한 지침을 사용할 수 있음 ) 한 다음 32 비트 버전 (패키지 여기 ) 을 다운로드하여 설치합니다.

MySQLdb 라이브러리를 빌드하고 설치하는 방법에 대한 여러 단계가 있습니다. 그들은 종종 미묘한 차이가 있습니다. 이것은 나에게 가장 인기있는 것으로 보였고 작동하는 솔루션을 제공했습니다. 아래에 몇 가지 편집하여 재현했습니다.

0 단계 : 시작하기 전에 Mac에 MySQL, Python 및 GCC가 설치되어 있다고 가정합니다 .

1 단계 : SourceForge에서 최신 MySQL for Python 어댑터 를 다운로드합니다 .

2 단계 : 다운로드 한 패키지를 추출합니다.

tar xzvf MySQL-python-1.2.2.tar.gz

3 단계 : 폴더 내부에서 패키지를 청소합니다.

sudo python setup.py clean

COUPLE OF EXTRA STEPS, ( 이 의견에서 )

3b 단계 : MySQL-python-1.2.2 / build / * 디렉터리에있는 모든 항목을 제거합니다. "python setup.py clean"을 신뢰하지 마세요.

3c 단계 : Users / $ USER / .python-eggs에서 계란 제거

4 단계 : 원래 _mysql.c 편집이 필요했지만 이제는 더 이상 필요하지 않습니다. MySQLdb 커뮤니티는 이제이 버그를 수정 한 것 같습니다.

5 단계 : lib 아래에 mysql이라는 하위 디렉토리를 가리키는 심볼릭 링크를 만듭니다. 이것은 컴파일 중에 찾는 곳입니다.

sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

6 단계 : setup_posix.py를 편집하고 다음을 변경합니다.

mysql_config.path = "mysql_config"

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

7 단계 : 동일한 디렉토리에서 패키지를 다시 빌드합니다 (함께 제공되는 경고 무시).

sudo python setup.py build

8 단계 : 패키지를 설치하면 완료됩니다.

sudo python setup.py install

9 단계 : 작동하는지 테스트합니다. MySQLdb를 가져올 수 있으면 작동합니다.

python

>>> import MySQLdb

10 단계 : 가져 오기를 시도 할 때 다음으로Library not loaded: libmysqlclient.18.dylib 끝나는 오류가 표시되면 다음 과 같은 Reason: image not found추가 심볼릭 링크를 만들어야합니다.

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

그러면 import MySQLdb오류없이 할 수 있어야 합니다.

마지막 문제는 빌드 디렉토리에서 Python을 시작하면 다음 오류가 발생한다는 것입니다.

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3 : UserWarning : 모듈 _mysql은 이미 /Library/Python/2.5/에서 가져 왔습니다. site-packages / MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg / _mysql.pyc,하지만 XXXX / MySQL-python-1.2.3c1이 sys.path에 추가됩니다.

이것은 Google에 매우 쉽지만 여기서 끝나는 문제를 해결하기 위해 (또는 미래에 대비 한 URL이 아닐 수도 있음) cd ..빌드 디렉토리에서 벗어나야 한다는 것을 파악하면 오류가 사라질 것입니다.

내가 맨 위에 썼 듯이, 나는이 끔찍한 문제에 대한 많은 다른 특정 경험이 있기 때문에이 답변이 일반화되는 것을보고 싶습니다. 수정하거나 더 나은 답변을 제공하세요.


1
10.6 (Snow Leopard)에서 Apple이 제공하는 Python은 64 비트 (32 비트 / 64 비트 범용) 실행을 선호합니다. 다른 함정도 있습니다. mysql 5.1.x 시리즈에서 잠시 동안 mysql에 의해 패키징 된 OS X 타르볼은 결함이있었습니다 (보편적이라고 주장하지만 그렇지 않았습니다). Python 용 데이터베이스 어댑터 인 MySQLdb에는 자체 문제가 있습니다. 이것은 MacPorts를 사용하여 필요한 모든 것을 자동으로 구축하는 것이 좋습니다. 무언가 잘못 되기는 너무 쉽습니다.
Ned Deily

다른 사람에게 도움이 될 수 있도록 여기에 남겨 두겠습니다. 또한 mysql_config를 올바른 경로로 설정하기 위해 site.cfg를 수정해야했습니다. 나는 그렇게에 / 옵션 디폴트되었으며, 처음에 경로를했다 생각하지 않는다 / ...,하지만 난 그것을 가리 키도록 필요의 경우 / usr / local / mysql / ...에
tchaymore

8
또한 실행했다 :sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
데이비드 언더 힐에게

1
저도 Lion에서 실행 중이며이 작업을 수행하는 데 큰 문제가있었습니다. 나는 마침내이 훌륭한 질문과 대답을 발견하고 100 % 따랐습니다. David Underhill이 위에서 언급 한대로 정확하게 추가하기 전까지는 작동하지 않았습니다 sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib.. 이것을 실행하면 예상대로 가져 왔습니다. 마침내. 헉. 비슷한 입장에있는 사람들을위한 방법입니다.
John the King

2
mysql 라이브러리가 있지만 제대로 연결되지 않은 것으로 나타났습니다. Mac OS ElCapitan은 / usr / lib 로의 링크를 허용하지 않습니다. 그래서 그냥 나를 위해 충분했다 : sudo를 에선 -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Maruthi

101

Mac OS X 10.8 (Mountain Lion), 10.9 (Mavericks), 10.10 (Yosemite) 및 10.11 (El Capitan)을 위한 빠르고 쉬운 방법 :

XCode, 명령 줄 도구 , Python 및 MySQL이 설치되어 있다고 가정합니다 .

  1. PIP 설치 :

    sudo easy_install pip
  2. ~ / .profile 편집 : (Mac OS X 10.10에서는 필요하지 않을 수 있음)

    nano ~/.profile

    다음 두 줄을 복사하여 붙여 넣습니다.

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

    저장하고 종료. 이후에는 다음 명령을 실행합니다.

    source  ~/.profile
  3. MySQLdb 설치

    sudo pip install MySQL-python

    모든 것이 잘 작동하는지 테스트하려면

    python -c "import MySQLdb"

나에게는 매력처럼 작용했다. 도움이되기를 바랍니다.

누락 된 라이브러리와 관련된 오류가 발생하면 : Library not loaded : libmysqlclient.18.dylib 다음 /usr/lib과 같이 심볼릭 링크해야합니다 .

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

2
감사합니다,이 솔루션은 맥 OSX에도 작동 10.9 :-)
matsoftware

2
이것은 나에게 훌륭하게 작동했지만 (Yosemite 공개 베타, Mysql 5, Py2.7) sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib아래 에서 명령 을 수행해야했습니다 .
Michael Scott Cuthbert

좋은 대답입니다. 나는 이런 식으로 추가 그래서 난 이미 내 .bash_profile을에 DYLD_LIBRARY_PATH의 다른 정의했다export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/
beroe

1
이것이 10.10.4에서 작동하는지 확인했습니다. 또한 homebrew의 mysql을 사용하면이 작업을 수행하기 위해 .profile을 변경할 필요가 없습니다.
Isotopp 2015

1
를 사용하여 MySQL을 설치 한 후 brew install mysql2 단계를 진행할 필요가 없었습니다.
dav.garcia

36

Macports 를 통해 mysql 및 python 설치 포터는 어려운 작업을 모두 수행했습니다.

sudo port install py26-mysql 
sudo port install mysql5-server

필요한 것을 설치해야합니다. ( mysql 서버에 대한 주석은 스택 오버플로 참조 )

mysql에만 연결하고 서버를 실행하지 않으면 첫 번째 줄이면 충분합니다.

현재 Macports (2013 년 초)는 OS와 실행 가능한 아키텍처의 공통 조합에 대한 바이너리 다운로드를 제공하고, 다른 사용자 (요청하는 경우)는 소스에서 빌드합니다.

일반적으로 macports (또는 fink)는 설치해야하는 복잡한 라이브러리 등이있을 때 도움이됩니다.

Python 전용 코드와 간단한 C 종속성은 setuptools 등을 통해 설정할 수 있지만 두 가지를 혼합하면 복잡해지기 시작합니다.


3
MacPorts 사용을 시작할 때 MacPorts가 / opt / local 아래에 항목을 설치하므로 경로가 / usr / bin보다 / opt / local / bin을 선호하는지 확인하십시오.
Teemu Kurppa

4
예! 기존 MySQL 서버에 연결해야하는 경우 두 번째 줄을 건너 뜁니다. 안타깝게도 관련 종속성의 수가 많기 때문에 OS X에서 mysql과 함께 python을 사용하려는 경우 MacPorts가 패키지 관리자를 직접 실행하는 대신 추가 python 인스턴스를 설치하도록하는 것이 더 쉬운 경우입니다.
Ned Deily

참고로, 지원 중단 경고가 표시되는 경우 다음 페이지에 수정 사항이 있습니다. bugs.launchpad.net/python-mysqldb/+bug/341943
Jay Taylor

4
참고로, 첫 번째 줄을 수행하면 (적어도 py27-mysql 사용) 어쨌든 mysql5를 설치하게됩니다. 소스를 다운로드하고 컴파일합니다. 아마도 당신이 원하는 것이 아닐 것입니다. Grr.
Ben Hardy 2012

@BenHardy-원하는대로, 정확히 내가 의미하는대로 모두 설치됩니다. 이제 lion 및 Snow Leopard 실행 파일은 macports에 의해 중앙에서 빌드되므로 대부분의 경우 로컬 컴파일을 수행하지 않습니다.
mmmmmm

15

pip 설치 :

sudo easy_install pip

Brew 설치 :

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

mysql을 설치합니다.

brew install mysql

MySQLdb 설치

sudo pip install MySQL-python

컴파일 문제가있는 경우 여기 답변 중 하나와 같이 ~ / .profile 파일을 편집 해보십시오.


감사! 이것은 Sierra [OSX 10.12.6 (16G29)]에서 작동했습니다.
Haranadh 2017-07-25

컬 : (22) 요청 된 URL 오류를 반환 : 404 찾을 수 없음
Thirupathi Thangavel

하지만 pip install mysqlclient대신했습니다. 공장!
jeremysprofile

13

다음은 9 단계를 완료 할 때 오류가 발생한 후 수행해야하는 또 다른 단계입니다.

ImportError: dlopen(/Users/rick/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib

    sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

참조 : 감사합니다! http://ageekstory.blogspot.com/2011_04_01_archive.html



4

새 라이온 상자를 얻은 후에이 문제가 다시 발생했습니다.

내가 찾은 최고의 솔루션 (여전히 100 % 최적은 아니지만 작동 함) :

Apple에서 XCode / Dev Tools를 다운로드하여 얻을 수 있습니다 . 이것은 큰 다운로드입니다.

...하지만 대신 필요한 것이 있고 XCode가없는이 github를 추천합니다 : https://github.com/kennethreitz/osx-gcc-installer

Lion 용 사전 빌드 된 PKG를 다운로드했습니다. https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg

  • 64 비트 버전의 MYSQL 커뮤니티를 다운로드했는지 확인하십시오. (DMG 설치는 쉬운 경로입니다) http://dev.mysql.com/downloads/mysql/

  • 다음과 같이 경로를 설정하십시오.

    내보내기 PATH = $ PATH : / usr / local / mysql-XXXX

    내보내기 DYLD_LIBRARY_PATH = / usr / local / mysql / lib /

    ARCHFLAGS = '-arch x86_64'내보내기

참고 :

위의 mysql-XXXX에서 1 위, XXX는 다운로드 한 특정 버전입니다. (아마도 / usr / local / mysql /은 동일한 별칭 일 가능성이 높기 때문에 작동하지만 설정을 아는 척하지는 않겠습니다)

2 ARCHFLAGS가 '-arch i386 -arch x86_64'로 설정되어 있다고 제안했지만 x86_64 만 지정하는 것이 더 잘 작동하는 것 같습니다. (나는 이것에 대한 몇 가지 이유를 생각할 수 있지만 엄격하게 관련이 없습니다).

  • 짐승을 설치하십시오!

    easy_install MySQL-python

  • 마지막 단계:

DYLD_LIBRARY_PATH를 영구적으로 추가하십시오!

bash_profile 또는 이와 유사한 것에 추가 할 수 있습니다. 이것은 내 시스템이 _mysql.so 등을 찾는 다양한 오류를 계속 주장하는 나에게 빠진 단계였습니다.

내보내기 DYLD_LIBRARY_PATH = / usr / local / mysql / lib /

@ richard-boardman, 방금 귀하의 소프트 링크 솔루션을 발견했습니다. 실제로 내 PATH 솔루션이 수행하는 것과 동일한 작업을 수행 할 수 있습니다. 여러분에게 가장 적합한 것이 무엇이든간에.

최고의 참조 : http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/


4

순수 파이썬을 사용해 볼 수 있습니다 pymysql.

sudo easy_install pymysql

(또는 pip설치 한 경우 사용 하십시오.) 그런 다음 import MySQLdb코드에 다음을 추가 하십시오.

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass

3

또는 간단한 시도 :

> sudo easy_install MySQL-python

아래와 같은 오류가 발생하는 경우 :

EnvironmentError : mysql_config를 찾을 수 없습니다.

, 다음을 실행하십시오.

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

0

64 비트 MySQL을 사용하는 경우 ARCHFLAGS를 사용하여 cpu 아키텍처를 지정하고 mysql-python 라이브러리를 빌드하는 것이 트릭을 수행합니다.

ARCHFLAGS='-arch x86_64' python setup.py build
ARCHFLAGS='-arch x86_64' python setup.py install

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

시스템이 mysql_config 파일을 찾을 수 없으므로 문제를 해결해야합니다.


0

macos Sierra에서는 파이썬이 아나콘다에 의해 관리되는 나를 위해 작동합니다.

anaconda search -t conda mysql-python

anaconda show CEFCA/mysql-python

conda install --channel https://conda.anaconda.org/CEFCA mysql-python

SQLAlchemy와 함께 사용할 수 :

Python 2.7.13 | Continuum Analytics, Inc. | (기본값, 2016 년 12 월 20 일, 23:05:08) [GCC 4.2.1 호환 Apple LLVM 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits"or "license"for more 정보. Anaconda는 Continuum Analytics에서 제공합니다. 확인하십시오 : http://continuum.io/thankshttps://anaconda.org

>>> sqlalchemy 가져 오기에서 *

>>> dbengine = create_engine ( 'mysql : // ....')


0

이 답변은 2019 년 11 월 경 업데이트입니다. 인기있는 pip 설치 중 어느 것도 MacOS 10.13 (및 기타 버전)에서 작동하는 설정을 제공하지 않습니다. 다음은 작업을 수행하는 간단한 방법입니다.

brew install mysql
pip install mysqlclient

brew 설치에 도움이 필요하면 다음 사이트를 참조하십시오 : https://brew.sh/


0

이 문제가 발생 mysqlclient하여 openssl을 찾을 위치를 알아야하며 OSX는 기본적으로 이것을 숨 깁니다.

로 openssl을 찾은 brew info openssl다음 opensslbin 경로를 PATH에 추가합니다 .

export PATH="/usr/local/opt/openssl/bin:$PATH"

.zshrc 또는 .bashrc에 추가하는 것이 좋습니다. 그러면 나중에 걱정할 필요가 없습니다. 그런 다음 해당 변수를 내 보낸 후 (bash 세션을 닫고 다시 열 수 있음) 두 개의 env 변수를 더 추가합니다.

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

그런 다음 마지막으로 다음을 실행하십시오.

pipenv install mysqlclient

잘 설치되어야합니다.

출처 : https://medium.com/@shandou/pipenv-install-mysqlclient-on-macosx-7c253b0112f2

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.