ImportError: ไม่มีโมดูลชื่อ MySQLdb


125

ฉันอ้างถึงบทช่วยสอนต่อไปนี้เพื่อสร้างหน้าเข้าสู่ระบบสำหรับเว็บแอปพลิเคชันของฉัน http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982

ฉันมีปัญหากับฐานข้อมูล ฉันได้รับไฟล์

ImportError: No module named MySQLdb

เมื่อฉันดำเนินการ

http://127.0.0.1:5000/testdb

ฉันได้ลองวิธีที่เป็นไปได้ทั้งหมดในการติดตั้ง python mysql วิธีที่กล่าวถึงในบทช่วยสอน easy_install, sudo apt-get install

ฉันได้ติดตั้ง mysql ใน env เสมือนของฉันแล้ว โครงสร้างไดเร็กทอรีของฉันเหมือนกับสิ่งที่อธิบายไว้ในบทช่วยสอน โมดูลได้รับการติดตั้งสำเร็จในระบบของฉันและฉันยังคงได้รับข้อผิดพลาดนี้

กรุณาช่วย. สิ่งที่อาจทำให้เกิดสิ่งนี้


คุณได้ติดตั้ง MySQL แต่คุณได้ติดตั้งแพ็คเกจMySQLdbสำหรับ Python หรือไม่?
Ffisegydd

ฉันใช้ sudo apt-get install mysql-python เมื่อฉันใช้ pip ฉันได้รับข้อผิดพลาดสภาพแวดล้อมสำหรับ mysql_config
user3182194

mysql ได้รับการติดตั้งภายในสภาพแวดล้อมเสมือนของฉันและทำงานได้อย่างถูกต้องและ mysqldb ได้รับการติดตั้งด้วย
user3182194

คำตอบ:


278

หากคุณมีปัญหาในการคอมไพล์ส่วนขยายไบนารีหรือบนแพลตฟอร์มที่คุณไม่สามารถทำได้คุณสามารถลองใช้การPyMySQLผูกไพ ธ อนแท้

เพียงแค่pip install pymysqlสลับ SQLAlchemy URI ของคุณเพื่อเริ่มต้นดังนี้:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://.....'

มีไดรเวอร์อื่น ๆ ที่คุณสามารถลองได้


ฉันพลาดอะไรไปหรือเปล่า? เหตุใดจึงไม่มีรายการนี้ โดยเฉพาะว่าชื่อภาษา: docs.sqlalchemy.org/en/latest/core/engines.html นี่คือสิ่งที่ฉันทำผิดจริงๆขอบคุณ
CashIsClay

โปรดทราบว่า db uri ขึ้นอยู่กับตัวเชื่อมต่อที่คุณใช้ :)
Braden Holt

สิ่งนี้ใช้ไม่ได้กับ python2.7. * สำหรับฉัน การใช้pip install MySQL-pythonงาน
Rahul Goyal

1
สิ่งนี้ช่วยได้มากในขณะที่ค้นหาหลังจากแก้ปัญหาข้อผิดพลาด flask-sqlalchemy ฉันประสบ: 1. เกิดข้อผิดพลาดในการเรียกใช้แอปพลิเคชัน WSGI ModuleNotFoundError: ไม่มีโมดูลชื่อ 'MySQLdb' 2. (_mysql_exceptions.OperationalError) (2006, 'ข้อผิดพลาดในการเชื่อมต่อ SSL: SSL_CTX_set_tmp_dh ล้มเหลว') (พื้นหลังของข้อผิดพลาดนี้ที่: sqlalche.me/e/e3q8 ) ขอบคุณมากและฉันหวังว่าคนอื่นจะพบวิธีแก้ปัญหานี้ด้วยคำอธิบายข้อผิดพลาดนี้เร็วขึ้นเท่าที่ฉันเคยทำ!
เบน

ทำงานบน CentOS ดูเหมือนว่าจะเป็นคำตอบที่ไม่ขึ้นกับระบบปฏิบัติการมากที่สุด ขอบคุณ!
trpt4him

94

หรือลองสิ่งนี้:

apt-get install python-mysqldb

9
ฉันคิดว่าคำตอบสำหรับคำถามคือนี่
codersofthedark

1
python-mysqldb มีการอ้างอิงบางอย่างเช่นไลบรารี VC ++ และบางครั้งไม่ทำงานบนระบบปฏิบัติการ 64 บิต
Nima Soroush

1
สิ่งนี้ได้ผลสำหรับฉันด้วย Ubuntu 16.04 พร้อม python 2.7
genepool99

สำหรับคนที่คำตอบนี้ไม่สามารถแก้ไขปัญหาได้อาจเกิดจากปัญหา Virtualenv ดู: stackoverflow.com/a/43984484
Chen Levy

ถูกต้องมากขึ้น:sudo apt-get install python-mysqldb
Tina J

25

ขอให้คุณลอง

pip install mysqlclient

2
ใช้ได้กับฉันใน python 3.7.3
nsssayom

1
ขอบคุณสำหรับการแบ่งปันมันใช้งานได้เมื่อฉันใช้ Windows แต่ฉันมีปัญหาบางอย่างกับmysqlclient( OSError: mysql_config not found) เมื่อฉันพยายามเรียกใช้แอพเดียวกันบน Ubuntu คำตอบที่ยอมรับจะแก้ไขได้
Bilal

ทำงานบน OSX กับ anaconda และ python 3.7.6
Saaru Lindestøkke

17

ปัญหาของฉันคือ:

return __import__('MySQLdb')
ImportError: No module named MySQLdb

และความละเอียดของฉัน:

pip install MySQL-python
yum install mysql-devel.x86_64

ในตอนแรกฉันเพิ่งติดตั้ง MySQL-python แต่ปัญหายังคงมีอยู่ ดังนั้นฉันคิดว่าหากปัญหานี้เกิดขึ้นคุณควรนำ mysql-devel มาพิจารณาด้วย หวังว่านี่จะช่วยได้


3
pip install MySQL-pythonใช่นั่นคือตั๋ว
Kirby

ขึ้นอยู่กับไลบรารี Microsoft Visual C ++ ในสภาพแวดล้อม Windows
Erizo

15

ฉันได้รับปัญหานี้เมื่อฉันทำงานกับ SQLAlchemy ภาษาเริ่มต้นที่ใช้โดย SQLAlchemy สำหรับ MySQL mysql+mysqldbคือ

engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')

ฉันได้รับNo module named MySQLdbข้อผิดพลาด "" เมื่อดำเนินการคำสั่งด้านบน ในการแก้ไขฉันได้ติดตั้งmysql-pythonโมดูลและปัญหาได้รับการแก้ไขแล้ว

sudo pip install mysql-python

3
ก่อนติดตั้ง mysql-python คุณยังต้องติดตั้ง mysql หรือสิ่งที่มีคำสั่ง msyql_config
mxi1

8

มันขึ้นอยู่กับ Python Version ด้วยจากประสบการณ์ของฉัน

หากคุณใช้ Python 3 คำตอบของ @DazWorrall ทำงานได้ดีสำหรับฉัน

อย่างไรก็ตามหากคุณใช้ Python 2 คุณควร

sudo pip install mysql-python

ซึ่งจะติดตั้งโมดูล 'MySQLdb' โดยไม่ต้องเปลี่ยน URI ของ SQLAlchemy


2
หากใครก็ตามที่ลงมาที่นี่และได้รับข้อผิดพลาดเกี่ยวกับสภาพแวดล้อม: mysql_config ไม่พบอะไรเลย sudo apt-get install libmysqlclient-dev สามารถช่วยคุณได้ คำตอบเดิม: stackoverflow.com/a/5178698/2190689
ssi-anik

หากคุณได้รับข้อผิดพลาดประเภท config parser คุณอาจดูสิ่งนี้ stackoverflow.com/a/23978968/2190689
ssi-anik

7

ฉันจึงใช้เวลาประมาณ 5 ชั่วโมงในการพยายามหาวิธีจัดการกับปัญหานี้เมื่อพยายามเรียกใช้

./manage.py makemigrations

ด้วย Ubuntu Server LTS 16.1, LAMP stack แบบเต็ม Apache2 MySql 5.7 PHP 7 Python 3 และ Django 1.10.2 ฉันพยายามหาคำตอบที่ดีสำหรับสิ่งนี้ อันที่จริงฉันยังไม่พอใจ แต่ทางออกเดียวที่ได้ผลสำหรับฉันคือนี่ ...

sudo apt-get install build-essential python-dev libapache2-mod-wsgi-py3 libmysqlclient-dev

ตามด้วย (จากภายในสภาพแวดล้อมเสมือน)

pip install mysqlclient

ฉันไม่ชอบที่จะต้องใช้การติดตั้ง dev เมื่อฉันพยายามตั้งค่าเว็บเซิร์ฟเวอร์ใหม่ แต่น่าเสียดายที่การกำหนดค่านี้เป็นเส้นทางเดียวที่สะดวกที่สุดที่ฉันสามารถทำได้


หากคุณไม่มีแพ็คเกจ '-dev' และคอมไพเลอร์คุณจะไม่สามารถติดตั้งโมดูล Python ใด ๆ ที่มีส่วนประกอบส่วนขยาย C ที่ต้องคอมไพล์ ตัวเลือกเดียวของคุณคือใช้กล่องสร้างแยกต่างหากซึ่งมีบิตพิเศษและสร้างไฟล์วงล้อ Python จากนั้นคัดลอกล้อไปยังระบบเป้าหมายของคุณและติดตั้งแพ็คเกจจากล้อแทน
Graham Dumpleton

3

แม้ว่าคำตอบของ@Edward van Kuikจะถูกต้อง แต่ก็ไม่ได้คำนึงถึงปัญหาเกี่ยวกับ Virtualenv v1.7 ขึ้นไป

ในการติดตั้งโดยเฉพาะอย่างยิ่งpython-mysqldbผ่านaptบน Ubuntu วางไว้ใต้/usr/lib/pythonX.Y/dist-packagesแต่เส้นทางนี้ไม่ได้รวมโดยเริ่มต้นใน sys.pathvirtualenv

ดังนั้นในการแก้ไขปัญหานี้คุณควรสร้าง Virtualenv ของคุณด้วยแพ็คเกจระบบโดยเรียกใช้สิ่งต่างๆเช่น:

virtualenv --system-site-packages .venv


0

มีข้อผิดพลาดมากมายที่เกี่ยวข้องกับสิทธิ์และสิ่งที่ไม่ คุณอาจต้องการลองสิ่งนี้:

xcode-select --install


0

ใน ubuntu 20 คุณสามารถลองสิ่งนี้:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.