मैक ओएस एक्स पर MySQLdb (MySQL के लिए पायथन डेटा एक्सेस लाइब्रेरी) कैसे स्थापित करें?


99

I रगड़ा हुआ। यह देखते हुए कि इस साइट को इस प्रकार की समस्याओं का समाधान करने का इरादा है, और मुझे पता है कि मुझे भविष्य में समाधान के लिए एक संदर्भ की आवश्यकता है, मैं सवाल पूछने जा रहा हूं, अपना उत्तर प्रदान करूंगा और देखूंगा कि क्या और कैसे तैरता है सतह।

तो सवाल यह है कि मैक ओएस एक्स पर MySQLdb काम कैसे कर सकता है ?

जवाबों:


133

पायथन 3 का उपयोग करने वालों के लिए अपडेट: आप बस MySQLdb का उपयोग conda install mysqlclientकरने के लिए आवश्यक पुस्तकालयों को स्थापित करने के लिए उपयोग कर सकते हैं क्योंकि यह वर्तमान में मौजूद है। निम्नलिखित एसओ प्रश्न एक सहायक सुराग था: पायथन 3 इम्पोर्ट्योर: 'कॉन्फिगरेशन' नाम का कोई मॉड्यूल नहीं । Mysqlclient इंस्टॉल करने से mysqlclient, mysql-कनेक्टर और llvmdev इंस्टॉल हो जाएंगे (कम से कम, इसने इन 3 लाइब्रेरी को मेरी मशीन पर इंस्टॉल कर दिया)।

यहाँ इस समस्या के साथ मेरे जुआ अनुभव की कहानी है। यदि आपको समस्या का बेहतर अनुभव है तो इसे संपादित या सामान्यीकृत देखना अच्छा लगेगा ... उस SO मैजिक का थोड़ा सा उपयोग करें।

नोट: अगले पैराग्राफ में टिप्पणियां स्नो लेपर्ड पर लागू होती हैं, लेकिन लायन के लिए नहीं, जिसे 64-बिट MySQL की आवश्यकता प्रतीत होती है

सबसे पहले, MySQLdb के लेखक (अभी भी!) का कहना है कि सबसे भयानक समस्याओं में से एक यह है कि OS X पायथन के 32 बिट संस्करण के साथ स्थापित होता है, लेकिन अधिकांश औसत joes (स्वयं शामिल) संभवतः 64 बिट संस्करण को स्थापित करने के लिए कूदते हैं MySQL का। ख़राब चाल ... 64 बिट संस्करण को हटा दें यदि आपने इसे स्थापित किया है (इस फिडली कार्य पर निर्देश यहाँ SO पर उपलब्ध हैं ), तो 32 बिट संस्करण ( यहाँ पैकेज ) डाउनलोड और स्थापित करें

MySQLdb पुस्तकालयों को बनाने और स्थापित करने के तरीके पर कई चरण-दर-चरण चरण हैं। उनके बीच अक्सर सूक्ष्म अंतर होता है। यह मेरे लिए सबसे लोकप्रिय लग रहा था, और काम करने वाला समाधान प्रदान किया। मैंने नीचे कुछ संपादन के साथ इसे पुन: प्रस्तुत किया है

चरण ०: शुरू करने से पहले, मैं मानता हूँ कि आपके पास मैक पर MySQL, पायथन और GCC स्थापित है।

चरण 1: SourceForge से पायथन एडाप्टर के लिए नवीनतम MySQL डाउनलोड करें ।

चरण 2: अपना डाउनलोड किया गया पैकेज निकालें:

tar xzvf MySQL-python-1.2.2.tar.gz

चरण 3: फ़ोल्डर के अंदर, पैकेज को साफ करें:

sudo python setup.py clean

अतिरिक्त स्तनों का कूप, ( इस टिप्पणी से )

चरण 3 बी: अपने MySQL-python-1.2.2 / build / * निर्देशिका के तहत सब कुछ निकालें - आप के लिए यह करने के लिए "अजगर setup.py साफ" पर भरोसा नहीं है

चरण 3c: उपयोगकर्ता / $ USER / .python- अंडे के तहत अंडा निकालें

चरण 4: मूल रूप से आवश्यक संपादन _mysql.c, लेकिन अब NO LONGER NECESSARY है। लगता है कि MySQLdb समुदाय ने अब इस बग को ठीक कर लिया है।

चरण 5: mysql नामक उप-निर्देशिका को इंगित करने के लिए lib के तहत एक प्रतीकात्मक लिंक बनाएं। यह वह जगह है जहां यह संकलन के दौरान दिखता है।

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 / स्थानीय / 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बिना किसी त्रुटि के सक्षम होना चाहिए ।

हालांकि एक अंतिम हिचकी यह है कि यदि आप निर्माण निर्देशिका से पायथन शुरू करते हैं तो आपको यह त्रुटि मिलेगी:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py.3 .3: UserWarning: मॉड्यूल _mysql पहले से ही /Library/Python/2.55 से आयात किया गया था। साइट-पैकेज / MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg / _mysql.pyc, लेकिन XXXX / MySQL-python-1.2cc1 को sys.path में जोड़ा जा रहा है

यह Google के लिए बहुत आसान है, लेकिन आपको इस परेशानी से बचाने के लिए आप यहाँ समाप्त हो जाएंगे (या शायद नहीं ... विशेष रूप से भविष्य-प्रूफ URL नहीं) और यह पता लगाएँ कि आपको cd ..बिल्ड निर्देशिका से बाहर जाने की आवश्यकता है और त्रुटि गायब होनी चाहिए।

जैसा कि मैंने शीर्ष पर लिखा था, मैं इस जवाब को सामान्यीकृत देखना पसंद करूंगा, क्योंकि इस भयानक समस्या के कई अन्य विशिष्ट अनुभव हैं। दूर संपादित करें, या अपना खुद का, बेहतर जवाब प्रदान करें।


1
ध्यान दें कि 10.6 (स्नो लेपर्ड) पर सेब की आपूर्ति करने वाला पायथन 64-बिट (यह 32-बिट / 64-बिट सार्वभौमिक) चलाने के लिए पसंद करता है। अन्य नुकसान भी हैं। Mysql 5.1.x श्रृंखला में कुछ समय के लिए, mysql द्वारा पैक किए गए OS X तारबोल दोषपूर्ण (सार्वभौमिक होने का दावा किया गया था लेकिन नहीं थे)। Mythdd के पायथन के लिए डेटा बेस एडॉप्टर के अपने मुद्दे हैं। यह एक ऐसा मामला है, जहां आपको अच्छी तरह से सलाह दी जाती है कि आप अपने जरूरत की सभी चीजों के निर्माण के लिए मैकपोर्ट्स का उपयोग करें। कुछ गलत करना बहुत आसान है।
नेड डिली

मैं इसे यहाँ छोड़ने जा रहा हूँ अगर यह किसी और की मदद करे। मुझे mysql_config को सही पथ पर सेट करने के लिए site.cfg को भी संशोधित करना पड़ा। मुझे नहीं लगता कि शुरू में इसका कोई रास्ता था, इसलिए / / / ... को डिफ़ॉल्ट करना था, लेकिन मुझे इसे / usr / स्थानीय / mysql / ... पर इंगित करने की आवश्यकता थी
tchaymore

8
मुझे भी दौड़ना था:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
डेविड अंडरहिल

1
मैं सिंह पर भी चल रहा हूं, और मुझे काम करने में भारी दिक्कतें हो रही हैं। मैंने आखिरकार इस महान SO प्रश्न और उत्तर को पाया और इसका 100% अनुसरण किया। यह मेरे लिए तब तक काम नहीं आया जब तक मैंने जोड़ा, जैसा कि डेविड अंडरहिल ने ऊपर उल्लेख किया है sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib:। एक बार जब मैंने इसे चलाया, तो यह उम्मीद के मुताबिक आयात हुआ ... आखिरकार। Wheewwww। बस एक समान स्थिति में उन लोगों के लिए एक फिजी।
जॉन द किंग

2
यह पता चला है कि मेरे पास mysql पुस्तकालय थे, लेकिन केवल ठीक से लिंक नहीं किए गए थे। Mac OS ElCapitan / usr / lib में लिंक करने की अनुमति नहीं देता है। तो मेरे लिए बस इतना ही काफी था: sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Maruthi

101

Mac OS X 10.8 (माउंटेन लायन), 10.9 (Mavericks), 10.10 (Yosemite), और 10.11 (El Capitan) के लिए एक त्वरित और आसान तरीका :

मुझे लगता है कि आपके पास XCode, इसके कमांड लाइन टूल , पायथन और MySQL स्थापित हैं।

  1. पीआईपी स्थापित करें:

    sudo easy_install pip
  2. संपादित करें ~ /। लाभ: (मैक ओएस एक्स 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"

यह मेरे लिए एक आकर्षण की तरह काम करता था। मुझे उम्मीद है यह मदद करेगा।

यदि आपको एक लापता पुस्तकालय के बारे में कोई त्रुटि है: पुस्तकालय लोड नहीं है: 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
इसने मेरे लिए बहुत अच्छा काम किया (योसेमाइट पब्लिक बीटा; मायसक्ल 5; पाय 2.7), लेकिन मुझे sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylibनीचे से कमांड करने की जरूरत थी ।
माइकल स्कॉट कथबर्ट

अच्छा उत्तर। मेरे पास पहले से ही मेरे .bash_profile में DYLD_LIBRARY_PATH की अन्य परिभाषाएँ थीं, इसलिए मैंने इसे इस तरह से जोड़ाexport DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/
beroe

1
बस सत्यापित किया गया है कि यह 10.10.4 के साथ काम करता है। इसके अलावा, होमब्रे से mysql का उपयोग करते हुए, इस काम को करने के लिए .profile परिवर्तन की आवश्यकता नहीं थी।
आइसोटोप

1
MySQL को स्थापित करने के बाद brew install mysql, मुझे दूसरे चरण से गुजरना नहीं था।
dav.garcia

36

Macports के माध्यम से mysql और python स्थापित करें पोर्टर्स ने सभी कठिन काम किए हैं।

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

आप की जरूरत है क्या स्थापित करना चाहिए (देखें टिप्पणियों के लिए ढेर अतिप्रवाह फिर से mysql सर्वर )

यदि आपको केवल mysql से कनेक्ट करना है और सर्वर नहीं चलाना है तो पहली पंक्ति पर्याप्त है।

मैकपोर्ट्स अब (2013 की शुरुआत में) ओएस के एक आम संयोजन के लिए द्विआधारी डाउनलोड प्रदान करेगा, दूसरों के लिए (और यदि आप इसे अनुरोध करते हैं) तो यह स्रोत से निर्माण करेगा।

सामान्य मैकपोर्ट (या फ़िंक) में मदद करते हैं जब जटिल पुस्तकालय आदि होते हैं जिन्हें स्थापित करने की आवश्यकता होती है।

पायथन केवल कोड और यदि सरल सी निर्भरता सेटपूल आदि के माध्यम से स्थापित किया जा सकता है, लेकिन यदि आप दोनों को मिलाते हैं तो यह जटिल होने लगता है।


3
ध्यान दें कि जब MacPorts का उपयोग शुरू करते हैं, तो सुनिश्चित करें कि आपका मार्ग पसंद करता / पसंद / स्थानीय / बिन ओवर / usr / बिन के रूप में MacPorts / ऑप्ट / स्थानीय के तहत चीजें स्थापित करता है।
तैमू कुरप्पा

4
हाँ! और दूसरी पंक्ति को छोड़ दें यदि आपको केवल मौजूदा MySQL सर्वर से कनेक्ट करने की आवश्यकता है। दुर्भाग्य से, इसमें शामिल निर्भरताओं की संख्या के साथ, ओएस एक्स पर mysql के साथ अजगर का उपयोग करने की कोशिश करना एक मामला है जहां मैकपोर्ट्स को पैकेज मैनेजर खुद खेलने की कोशिश करने के बजाय एक अतिरिक्त अजगर उदाहरण स्थापित करना आसान है।
नेड डिली

एक सिडेनोट के रूप में, यदि आपको एक डेप्रिसिएशन चेतावनी मिल रही है, तो निम्न पृष्ठ पर फिक्स है: Bugs.launchpad.net/python-mysqldb/+bug/341943
Jay Taylor

4
FYI करें, यदि आप सिर्फ पहली पंक्ति (py27-mysql के साथ कम से कम) करते हैं, तो यह वैसे भी mysql5 स्थापित करने को समाप्त कर देगा। स्रोत को डाउनलोड और संकलित करके। शायद नहीं जो आप चाहते हैं। Grr।
बेन हार्डी

@ बर्नहार्डी - यह सब स्थापित हो जाता है जो कि आप चाहते हैं और वास्तव में मेरा क्या मतलब है- अब शेर और स्नो लेपर्ड निष्पादन केंद्र भी मैकपोर्ट्स द्वारा बनाए जाते हैं, इसलिए अधिकांश मामलों में स्थानीय संकलन नहीं करेंगे।
mmmmmm

15

पाइप स्थापित करें:

sudo easy_install pip

काढ़ा स्थापित करें:

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

Mysql स्थापित करें:

brew install mysql

MySQLdb स्थापित करें

sudo pip install MySQL-python

यदि आपके पास संकलन समस्याएं हैं, तो ~ / .profile फ़ाइल को किसी एक उत्तर में संपादित करने का प्रयास करें जैसे कि यहां दिए गए उत्तर में।


धन्यवाद! इसने सिएरा [OSX 10.12.6 (16G29)] पर काम किया।
हरनध

कर्ल: (22) अनुरोधित URL में त्रुटि हुई: 404 नहीं मिला
तिरुपति थंगावेल

ऐसा किया लेकिन pip install mysqlclientइसके बजाय। काम करता है!
जेरेमीसफाइल

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 टूल्स डाउनलोड करके प्राप्त कर सकते हैं - यह एक बड़ा डाउनलोड है -

... लेकिन इसके बजाय मैं इस गितुब की सिफारिश करता हूं, जिसमें आपको क्या चाहिए (और एक्सकोड नहीं है): https://github.com/kennethreitz/osx-gcc-installer

मैंने शेर, https://github.com/downloads/kennethreitz/osx-gcc-installer/GCC-10.7-v2.pkg

  • सुनिश्चित करें कि आपने MYSQL समुदाय का 64-BIT संस्करण डाउनलोड किया है। (DMG इंस्टॉल एक आसान मार्ग है) http://dev.mysql.com/downloads/mysql/

  • पथ निम्नानुसार सेट करें:

    निर्यात पथ = $ पथ: / usr / स्थानीय / mysql-XXXX

    निर्यात DYLD_LIBRARY_PATH = / usr / स्थानीय / mysql / lib /

    निर्यात ARCHFLAGS = '- आर्च x86_64'

ध्यान दें कि:

1 में mysql-XXXX ऊपर, XXX आपके द्वारा डाउनलोड किया गया विशिष्ट संस्करण है। (संभवतः / usr / स्थानीय / 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 / स्थानीय / mysql / lib /

@ रिचर्ड-बोर्डमैन, बस आपके सॉफ्ट लिंक सॉल्यूशन पर ध्यान दिया गया, जो मेरे 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

यदि यह नीचे की तरह एक त्रुटि देता है:

एनवायरनमेंटर: mysql_config नहीं मिला

, तो बस इसे चलाएं

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

0

यदि आप 64 बिट MySQL का उपयोग कर रहे हैं, तो mysql-python पुस्तकालयों का निर्माण करते समय अपने सीपीयू आर्किटेक्चर को निर्दिष्ट करने के लिए ARCHFLAGS का उपयोग करेंगे।

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

मैकोस सिएरा पर यह काम मेरे लिए है, जहां अजगर एनाकोंडा द्वारा प्रबंधित किया जाता है:

anaconda search -t conda mysql-python

anaconda show CEFCA/mysql-python

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

SQLAlchemy के साथ उपयोग करने के लिए:

पायथन 2.7.13 | कॉन्टिनम एनालिटिक्स, इंक (डिफ़ॉल्ट, 20 दिसंबर 2016, 23:05:08) [GCC 4.2.1 डार्विन टाइप "मदद", "कॉपीराइट", "क्रेडिट" या "लाइसेंस" के लिए संगत Apple LLVM 6.0 (क्लैंग -600.0.57)] अधिक के लिए जानकारी। एनाकोंडा आपके लिए कॉन्टिनम एनालिटिक्स द्वारा लाया गया है। कृपया देखें: http://continuum.io/thanks और https://anaconda.org

>>> sqlalchemy आयात से *

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


0

यह उत्तर एक अपडेट है, लगभग नवंबर 2019। लोकप्रिय पाइप इंस्टॉल में से कोई भी आपको मैकओएस 10.13 (और साथ ही अन्य संस्करणों की संभावना) पर एक काम करने वाला सेटअप देगा। यहाँ एक आसान तरीका है जो मुझे काम करने में मिला है:

brew install mysql
pip install mysqlclient

यदि आपको काढ़ा लगाने में सहायता की आवश्यकता है, तो इस साइट को देखें: https://brew.sh/


0

मैं इस मुद्दे पर भाग गया और पाया कि mysqlclientओपनस्सेल को खोजने के लिए यह जानने की जरूरत है, और ओएसएक्स डिफ़ॉल्ट रूप से इसे छुपाता है।

के साथ खुलता है पता लगाएँ brew info openssl, और फिर अपने पथ के लिए अपने opensslबिन में पथ जोड़ें :

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

मैं आपको अपने .zshrc या .bashrc से जोड़ने की सलाह देता हूं ताकि आपको भविष्य में इसके बारे में चिंता करने की आवश्यकता न हो। फिर, उस परिवर्तनशील निर्यात के साथ (जो आपके बैश सत्र को बंद करने और फिर से खोलने में सक्षम हो सकता है), दो और 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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.