Mac OS X'e MySQLdb (MySQL'e Python veri erişim kitaplığı) nasıl kurulur?


99

Ben bir Python acemisiyim, ancak MySQLdb'nin düzgün çalışmasını nasıl sağlayacağımı öğrenmek için bir gün geçirdim ve Google'a göre evren, bir PITA'nın ne olduğuna dair çok sayıda referans ve görünen aşırı sayıda kılavuz içeriyor modası geçmiş. Bu sitenin bu tür sorunları ele almayı amaçladığı ve gelecekte çözüme başvurmaya ihtiyacım olacağını bildiğim için soruyu soracağım, cevabımı vereceğim ve başka neler olduğunu göreceğim. yüzey.

Öyleyse soru, MySQLdb'nin Mac OS X üzerinde nasıl çalıştırılacağıdır?

Yanıtlar:


133

Python3 kullananlar için güncelleme:conda install mysqlclient MySQLdb'yi şu anda mevcut haliyle kullanmak için gerekli kitaplıkları yüklemek için kullanabilirsiniz. Aşağıdaki SO sorusu faydalı bir ipucuydu: Python 3 ImportError: 'ConfigParser' adlı modül yok . Mysqlclient'i yüklemek mysqlclient, mysql-connector ve llvmdev'i kuracak (en azından bu 3 kitaplığı makineme kurdu).

İşte bu problemle ilgili baştan savma deneyimimin hikayesi. Konuyla ilgili daha iyi deneyime sahipseniz, düzenlenmiş veya genelleştirilmiş görmeyi çok isterim ... biraz SO büyüsünü uygulayın.

Not: Sonraki paragraftaki yorumlar Snow Leopard'a uygulandı, ancak Lion'a uygulanmadı, bu 64 bit MySQL gerektiriyor gibi görünüyor

Öncelikle, MySQLdb yazarı (hala?) Burada en tehlikeli sorunlardan birinin OS X'in Python'un 32 bit sürümüyle birlikte gelmesi olduğunu söylüyor , ancak çoğu ortalama joes (kendim dahil) muhtemelen 64 bit sürümünü yüklemek için atlıyor. MySQL. Yanlış hareket ... 64 bit sürümünü yüklediyseniz kaldırın (bu karmaşık görevle ilgili talimatlar burada SO'da mevcuttur ), ardından 32 bit sürümü indirip yükleyin ( burada paket )

MySQLdb kitaplıklarının nasıl oluşturulup kurulacağına dair çok sayıda adım adım vardır. Genellikle ince farklılıkları vardır. Bu benim için en popüler gibi göründü ve çalışma çözümünü sağladı. Aşağıda birkaç düzenleme ile yeniden oluşturdum

Adım 0: Başlamadan önce , Mac'te MySQL, Python ve GCC'nin kurulu olduğunu varsayıyorum .

Adım 1: SourceForge'dan Python için en son MySQL adaptörünü indirin .

Adım 2: İndirdiğiniz paketi çıkarın:

tar xzvf MySQL-python-1.2.2.tar.gz

3. Adım: Klasörün içinde paketi temizleyin:

sudo python setup.py clean

BİRKAÇ EKSTRA ADIM, ( bu yorumdan )

Adım 3b: MySQL-python-1.2.2 / build / * dizininizin altındaki her şeyi kaldırın - bunu sizin için yapması için "python setup.py clean" e güvenmeyin

Adım 3c: Kullanıcılar / $ USER / .python-yumurta altındaki yumurtayı kaldırın

Adım 4: Başlangıçta _mysql.c'nin düzenlenmesi gerekiyordu, ancak artık ARTIK GEREK YOKTUR. MySQLdb topluluğu bu hatayı şimdi düzeltti gibi görünüyor.

Adım 5: mysql adlı bir alt dizine işaret etmek için lib altında sembolik bir bağlantı oluşturun. Derleme sırasında aradığı yer burasıdır.

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

6. Adım: setup_posix.py dosyasını düzenleyin ve aşağıdakileri değiştirin

mysql_config.path = "mysql_config"

-e

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

Adım 7: Aynı dizinde paketinizi yeniden oluşturun (onunla birlikte gelen uyarıları dikkate almayın)

sudo python setup.py build

Adım 8: Paketi kurun ve bitirdiniz.

sudo python setup.py install

9. Adım: Çalışıp çalışmadığını test edin. MySQLdb'yi içe aktarabiliyorsanız çalışır.

python

>>> import MySQLdb

Adım 10: İçe aktarmayı denediğinizde Library not loaded: libmysqlclient.18.dylibşununla biten şikayet eden bir hata alırsanız : Reason: image not foundek bir sembolik bağlantı oluşturmanız gerekir:

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

Daha sonra import MySQLdbherhangi bir hata yapmadan yapabilmelisiniz .

Yine de son bir hıçkırık, Python'u yapı dizininden başlatırsanız şu hatayı alacağınızdır:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3: UserWarning: _mysql modülü /Library/Python/2.5/ adresinden zaten içe aktarıldı site-packages / MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg / _mysql.pyc, ancak XXXX / MySQL-python-1.2.3c1 sys.path'e ekleniyor

Bu Google için oldukça kolaydır, ancak sizi sıkıntıdan kurtarmak için burada son bulacaksınız (veya belki de ... özellikle geleceğe hazır bir URL değil) ve cd ..derleme dizininden çıkmanız gerektiğini ve hatanın kaybolması gerektiğini anlayın.

En üstte yazdığım gibi, bu korkunç sorunun başka birçok özel deneyimi olduğu için, bu cevabın genelleştirilmiş olduğunu görmek isterim. Düzenleyin veya kendi daha iyi cevabınızı verin.


1
Apple tarafından sağlanan 10.6 (Snow Leopard) üzerindeki Python'un 64 bit (32 bit / 64 bit evrensel) çalıştırmayı tercih ettiğini unutmayın. Başka tuzaklar da var. Bir süre mysql 5.1.x serisinde, mysql tarafından paketlenen OS X tarball'ları hatalıydı (evrensel olduğu iddia edildi, ancak değildi). Python için veri tabanı adaptörü MySQLdb'nin kendi sorunları vardı. Bu, ihtiyacınız olan her şeyi otomatik olarak oluşturmak için MacPorts'u kullanmanızın tavsiye edildiği bir durumdur. Bir şeylerin ters gitmesi çok kolay.
Ned Deily

Başkasına yardım etmesi ihtimaline karşı bunu burada bırakacağım. Ayrıca mysql_config'i doğru yola ayarlamak için site.cfg'yi değiştirmek zorunda kaldım. Başlangıçta bir yolu olduğunu sanmıyorum, bu yüzden / opt / ... olarak
ayarlanıyordu

8
Ayrıca koşmak zorunda kaldım:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
David Underhill

1
Ben de Lion üzerinde koşuyorum ve bunu çalıştırırken büyük sorunlar yaşadım. Sonunda bu harika SO sorusunu ve cevabını buldum ve% 100 takip ettim. David Underhill yukarıda belirtildiği şekliyle, katma dek Benim için işe yaramadı: sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib. Bunu çalıştırdıktan sonra, beklendiği gibi içe aktarıldı ... sonunda. Wheewwww. Benzer bir pozisyonda olanlar için sadece bir fyi.
Kral John

2
Görünüşe göre mysql kitaplıklarım vardı, ancak sadece düzgün bir şekilde bağlanmamıştım. Mac OS ElCapitan, / usr / lib'ye bağlanmaya izin vermiyor. Yani bu benim için yeterliydi: sudo ln -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) ve 10.11 (El Capitan) için hızlı ve kolay bir yol :

XCode, komut satırı araçları , Python ve MySQL'in kurulu olduğunu varsayıyorum .

  1. PIP'yi yükleyin:

    sudo easy_install pip
  2. ~ / .Profile düzenleyin: (Mac OS X 10.10'da gerekli olmayabilir)

    nano ~/.profile

    Aşağıdaki iki satırı kopyalayıp yapıştırın

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

    Kaydet ve çık. Afterwords aşağıdaki komutu yürütün:

    source  ~/.profile
  3. MySQLdb'yi yükleyin

    sudo pip install MySQL-python

    Her şeyin yolunda gittiğini test etmek için sadece deneyin

    python -c "import MySQLdb"

Benim için bir cazibe gibi çalıştı. Umut ediyorum bu yardım eder.

Eksik bir kitaplıkla ilgili bir hatayla karşılaşırsanız: Kitaplık yüklenmedi: libmysqlclient.18.dylib , bunu /usr/libbeğenmek için sembolik linklemeniz gerekir :

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

2
Teşekkürler, bu çözüm Mac OSX
10.9'da

2
Bu benim için harika çalıştı (Yosemite genel beta; Mysql 5; Py2.7), ancak sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylibkomutu aşağıdan yapmam gerekiyordu .
Michael Scott Cuthbert

İyi cevap. .Bash_profile dosyamda DYLD_LIBRARY_PATH'ın başka tanımları zaten vardı, bu yüzden onu bu şekilde ekledimexport DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/
beroe

1
Bunun 10.10.4 ile çalıştığını doğruladı. Ayrıca, homebrew'den mysql kullanıldığında, .profile değişikliği bu işi yapmak için gerekli değildi.
Isotopp

1
MySQL'i ile kurduktan sonra brew install mysql2. adıma geçmek zorunda kalmadım.
dav.garcia

36

Macports üzerinden mysql ve python yükleyin Taşıyıcılar tüm zor işleri yaptı.

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

ihtiyacınız olanı yüklemelisiniz. ( mysql sunucusunun yorumları için yığın taşması konusuna bakın )

Yalnızca mysql'e bağlanmanız gerekiyorsa ve bir sunucu çalıştırmıyorsanız, ilk satır yeterlidir.

Macports şimdi (2013'ün başlarında), işletim sisteminin ortak kombinasyonları için çalıştırılabilir bir mimari için ikili indirmeler sağlayacak, diğerleri için (ve isterseniz) kaynaktan oluşturacaktır.

Genel olarak macports (veya fink), yüklenmesi gereken karmaşık kitaplıklar vb. Olduğunda yardımcı olur.

Yalnızca Python kodu ve basit C bağımlılıkları kurulum araçları vb. Aracılığıyla kurulabilirse, ancak ikisini karıştırırsanız karmaşık olmaya başlar.


3
MacPorts kullanmaya başlarken, MacPorts / opt / local altına şeyler yüklediği için yolunuzun / opt / local / bin yerine / usr / bin'i tercih ettiğinden emin olun.
Teemu Kurppa

4
Evet! Ve mevcut bir MySQL sunucusuna bağlanmanız gerekiyorsa ikinci satırı atlayın. Ne yazık ki, dahil olan bağımlılıkların sayısı ile, OS X üzerinde mysql ile python kullanmaya çalışmak, MacPorts'un paket yöneticisini oynamaya çalışmak yerine ek bir python örneği yüklemesine izin vermenin daha kolay olduğu bir durumdur.
Ned Deily

Bir yan not olarak, bir kullanımdan kaldırma
Jay Taylor

4
Bilginize, sadece ilk satırı yaparsanız (en azından py27-mysql ile), yine de mysql5'i yükleyecektir. Kaynağı indirip derleyerek. Muhtemelen istediğin şey değil. Grr.
Ben Hardy

@BenHardy - istediğiniz şey ve tam olarak kastettiğim şey yüklenir - ayrıca şimdi lion ve Snow Leopard çalıştırılabilirleri macports tarafından merkezi olarak oluşturulmuştur, bu nedenle çoğu durumda yerel bir derleme yapmaz.
mmmmmm

15

Pip'i kurun:

sudo easy_install pip

Demlemek yükleyin:

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

Mysql yükleyin:

brew install mysql

MySQLdb'yi yükleyin

sudo pip install MySQL-python

Derleme problemleriniz varsa, ~ / .profile dosyasını buradaki cevaplardan biri gibi düzenlemeyi deneyin.


Teşekkürler! Bu, Sierra [OSX 10.12.6 (16G29)] üzerinde çalıştı.
Haranadh

curl: (22) İstenen URL şu hatayı döndürdü: 404 Bulunamadı
Thirupathi Thangavel

bunu yaptı ama pip install mysqlclientbunun yerine. İşler!
jeremysprofile

13

İşte 9. Adımı tamamlarken bir hata aldıktan sonra atmam gereken bir başka adım:

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

Referans: Teşekkürler! http://ageekstory.blogspot.com/2011_04_01_archive.html



4

Yeni bir Lion kutusu aldıktan sonra (yine!) Bu sorunu yaşadım.

Bulduğum en iyi çözüm (yine de% 100 optimal değil ama çalışıyor):

Eğer yapabilirsiniz Apple XCode / Dev Araçlar indirerek bunu elde - bu büyük bir indirme olduğunu -

... ancak bunun yerine ihtiyacınız olanı içeren (ve XCode'a sahip olmayan) bu github'ı tavsiye ederim: https://github.com/kennethreitz/osx-gcc-installer

Aslan için önceden oluşturulmuş PKG'yi indirdim, https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg

  • MYSQL Community'nin 64-BIT sürümünü indirdiğinizden emin olun. (DMG kurulumu kolay bir yoldur) http://dev.mysql.com/downloads/mysql/

  • Yolları aşağıdaki gibi ayarlayın:

    dışa aktarma PATH = $ PATH: / usr / local / mysql-XXXX

    dışa aktar DYLD_LIBRARY_PATH = / usr / local / mysql / lib /

    dışa aktar ARCHFLAGS = '- arch x86_64'

BUNU NOT ET:

Yukarıdaki mysql-XXXX'te 1, XXX, indirdiğiniz belirli sürümdür. (Muhtemelen / usr / local / mysql / da işe yarar çünkü bu büyük olasılıkla aynı takma addır, ancak kurulumunuzu biliyormuş gibi yapmayacağım)

2 ARCHFLAGS'ın '-arch i386 -arch x86_64' olarak ayarlanmasını önerdiğini gördüm, ancak yalnızca x86_64 belirtmenin benim için daha iyi çalıştığını gördüm. (Bunun için bazı nedenler düşünebilirim, ancak bunlar tamamen alakalı değil).

  • Canavarı yükleyin!

    easy_install MySQL-python

  • SON ADIM:

DYLD_LIBRARY_PATH'yi kalıcı olarak ekleyin!

Bunu bash_profile veya benzeri bir profilinize ekleyebilirsiniz. Bu benim için eksik adımdı ve bu adım olmadan sistemim _mysql.so vb. Bulma çeşitli hatalarda ısrar etmeye devam etti.

dışa aktar DYLD_LIBRARY_PATH = / usr / local / mysql / lib /

@ richard-boardman, az önce yumuşak bağlantı çözümünüzü fark ettim, ki bu aslında PATH çözümümün yaptığı şeyi yapıyor olabilir ... millet, sizin için en iyi olan ne ise.

En iyi referans: http://activeintelligence.org/blog/archive/mysql-python-aka-mysqldb-on-osx-lion/


4

Pure-python kullanmayı deneyebilirsiniz pymysql:

sudo easy_install pymysql

(Ya pipda yüklediyseniz kullanın.) Ardından, bunu import MySQLdbkodunuzda önünüze ekleyin :

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

3

Veya basit bir deneyin:

> sudo easy_install MySQL-python

Aşağıdaki gibi bir hata verirse:

EnvironmentError: mysql_config bulunamadı

, o zaman bunu çalıştır

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

0

64 bit MySQL kullanıyorsanız, mysql-python kitaplıkları oluştururken cpu mimarinizi belirlemek için ARCHFLAGS kullanmak işinizi görecektir:

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

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

Sistem mysql_config dosyasını bulamadığından sizin için sorunu çözmelidir.


0

Macos Sierra'da bu benim için çalışıyor, burada python anaconda tarafından yönetiliyor:

anaconda search -t conda mysql-python

anaconda show CEFCA/mysql-python

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

SQLAlchemy ile kullanılacak:

Python 2.7.13 | Continuum Analytics, Inc. | (varsayılan, 20 Aralık 2016, 23:05:08) [GCC 4.2.1 Uyumlu Apple LLVM 6.0 (clang-600.0.57)] darwin'de Daha fazlası için "yardım", "telif hakkı", "kredi" veya "lisans" yazın bilgi. Anaconda, Continuum Analytics tarafından size sunulmaktadır. Lütfen şu adreslere göz atın : http://continuum.io/thanks ve https://anaconda.org

>>> sqlalchemy ithalatından *

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


0

Bu yanıt, Kasım 2019 civarında bir güncellemedir. Popüler pip kurulumlarından hiçbiri size MacOS 10.13'te (ve muhtemelen diğer sürümlerde) çalışan bir kurulum sağlamaz. İşleri çalıştırmanın basit bir yolu:

brew install mysql
pip install mysqlclient

Brew kurulumunda yardıma ihtiyacınız varsa, şu siteye bakın: https://brew.sh/


0

Bu sorunla karşılaştım ve bunun mysqlclientopenssl'yi nerede bulacağını bilmesi gerektiğini buldum ve OSX bunu varsayılan olarak gizler.

Openssl'yi ile bulun brew info opensslve ardından bölmenizin yolunu opensslPATH'ınıza ekleyin:

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

Bunu .zshrc veya .bashrc dosyanıza eklemenizi öneririm, böylece gelecekte bunun için endişelenmenize gerek kalmaz. Ardından, dışa aktarılan bu değişkenle (bu, bash oturumunuzu kapatmanızı ve yeniden açmanızı sağlayabilir), iki ortam değişkeni daha ekleyin:

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

Ardından, sonunda çalıştırın:

pipenv install mysqlclient

ve çok iyi yüklenmelidir.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.