ImportError: Không có mô-đun nào có tên MySQLdb


124

Tôi đang tham khảo hướng dẫn sau để tạo trang đăng nhập cho ứng dụng web của mình. http://code.tutsplus.com/tutorials/intro-to-flask-signs-in-and-out--net-29982

Tôi đang gặp sự cố với cơ sở dữ liệu. Tôi đang nhận được một

ImportError: No module named MySQLdb

khi tôi thực hiện

http://127.0.0.1:5000/testdb

Tôi đã thử tất cả các cách có thể để cài đặt python mysql, cách được đề cập trong hướng dẫn, easy_install, sudo apt-get install.

Tôi đã cài đặt mysql trong env ảo của mình. Cấu trúc thư mục của tôi giống như những gì được giải thích trong hướng dẫn. Mô-đun đã được cài đặt thành công trong hệ thống của tôi và tôi vẫn gặp lỗi này.

Xin vui lòng giúp đỡ. Điều gì có thể gây ra điều này.


Bạn đã cài đặt MySQL nhưng bạn đã cài đặt gói MySQLdb cho Python chưa?
Ffisegydd Ngày

Tôi đã sử dụng sudo apt-get install mysql-python. Khi tôi sử dụng pip tôi đã nhận lỗi Môi trường cho mysql_config
user3182194

mysql đã được cài đặt trong môi trường ảo của tôi và hoạt động bình thường và mysqldb cũng đã được cài đặt.
user3182194 Ngày

Câu trả lời:


277

Nếu bạn đang gặp sự cố khi biên dịch tiện ích mở rộng nhị phân hoặc trên nền tảng mà bạn không thể, bạn có thể thử sử dụng PyMySQLliên kết python thuần túy .

Đơn giản pip install pymysqlvà chuyển URI SQLAlchemy của bạn thành bắt đầu như sau:

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

Có một số trình điều khiển khác bạn cũng có thể thử.


Tôi đã bỏ lỡ điều gì đó? Tại sao điều này không được liệt kê ở đây? Cụ thể tên phương ngữ đó: docs.sqlalchemy.org/en/latest/core/engines.html . Đây chính xác là những gì tôi đã sai, cảm ơn.
CashIsClay

Lưu ý db uri có phần phụ thuộc vào kết nối bạn sử dụng :)
Braden Holt

điều này không hoạt động với python2.7. * đối với tôi. sử dụng pip install MySQL-pythonđã làm việc.
Rahul Goyal

1
cái này đã giúp rất nhiều trong khi tìm kiếm giải pháp cho lỗi flask-sqlalchemy. Tôi đã gặp phải: 1. Lỗi khi chạy ứng dụng WSGI ModuleNotFoundError: Không có mô-đun nào có tên 'MySQLdb' 2. (_mysql_exceptions.OperationalError) (2006, 'Lỗi kết nối SSL: SSL_CTX_set_tmp_dh không thành công') (Thông tin cơ bản về lỗi này tại: sqlalche.me/e/e3q8 ) cảm ơn bạn rất nhiều và tôi hy vọng rằng những người khác sẽ tìm thấy giải pháp này với mô tả lỗi này nhanh hơn như tôi đã làm!
ben

Làm việc trên CentOS, có vẻ là câu trả lời không phụ thuộc vào hệ điều hành nhất. Cảm ơn!
trpt4him

94

Hoặc thử cái này:

apt-get install python-mysqldb

9
Tôi nghĩ rằng câu trả lời cho câu hỏi này
codersofthedark

1
python-mysqldb có một số phụ thuộc như thư viện VC ++ và đôi khi không hoạt động trên hệ điều hành 64 bit
Nima Soroush

1
Điều này cũng làm việc cho tôi. Ubuntu 16.04 với python 2.7
genepool99

Đối với những người mà câu trả lời này không giải quyết được sự cố của họ, điều này có thể là do sự cố virtualenv, hãy xem: stackoverflow.com/a/43984484
Chen Levy

Chính xác hơn:sudo apt-get install python-mysqldb
Tina J

24

bạn có thể thử

pip install mysqlclient

2
Công trình đối với tôi trên python 3.7.3
nsssayom

1
Cảm ơn bạn đã chia sẻ, Nó hoạt động khi tôi đang sử dụng Windows nhưng tôi gặp một số vấn đề với mysqlclient( OSError: mysql_config not found) khi tôi cố gắng chạy cùng một ứng dụng trên Ubuntu, câu trả lời được chấp nhận đã giải quyết được vấn đề đó.
Bilal

Hoạt động trên OSX với anaconda và python 3.7.6
Saaru Lindestøkke

16

Vấn đề của tôi là:

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

và giải pháp của tôi:

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

ngay từ đầu, tôi vừa cài đặt MySQL-python, nhưng vấn đề vẫn tồn tại. Vì vậy, tôi nghĩ nếu vấn đề này xảy ra, bạn cũng nên xem xét mysql-devel. Hi vọng điêu nay co ich.


2
pip install MySQL-pythonvâng, đó là vé
Kirby

Điều này phụ thuộc vào thư viện Microsoft Visual C ++ trong môi trường Windows
Erizo

15

Tôi gặp sự cố này khi làm việc trên SQLAlchemy. Phương ngữ mặc định được SQLAlchemy sử dụng cho MySQL là mysql+mysqldb.

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

Tôi gặp No module named MySQLdblỗi "" khi lệnh trên được thực thi. Để khắc phục, tôi đã cài đặt mysql-pythonmô-đun và sự cố đã được khắc phục.

sudo pip install mysql-python

3
trước khi cài đặt mysql-python, bạn vẫn cần cài đặt mysql hoặc thứ gì đó có chứa lệnh msyql_config.
mxi1

8

Nó phụ thuộc vào Phiên bản Python cũng như theo kinh nghiệm của tôi.

Nếu bạn đang sử dụng Python 3, câu trả lời @DazWorrall phù hợp với tôi.

Tuy nhiên, nếu bạn đang sử dụng Python 2, bạn nên

sudo pip install mysql-python

mà sẽ cài đặt mô-đun 'MySQLdb' mà không cần phải thay đổi SQLAlchemy URI.


2
Nếu bất kỳ ai ở đây và gặp lỗi môi trường: mysql_config not found kinda thing, thì sudo apt-get install libmysqlclient-dev có thể giúp bạn. Câu trả lời gốc: stackoverflow.com/a/5178698/2190689
ssi-anik

Nếu bạn nhận được loại lỗi phân tích cú pháp cấu hình, thì bạn có thể xem phần này. stackoverflow.com/a/23978968/2190689
ssi-anik

7

Vì vậy, tôi đã dành khoảng 5 giờ để tìm cách giải quyết vấn đề này khi cố gắng chạy

./manage.py makemigrations

Với Ubuntu Server LTS 16.1, một ngăn xếp LAMP đầy đủ, Apache2 MySql 5.7 PHP 7 Python 3 và Django 1.10.2, tôi thực sự đấu tranh để tìm ra câu trả lời tốt cho vấn đề này. Trên thực tế, tôi vẫn chưa hài lòng, nhưng giải pháp DUY NHẤT hiệu quả với tôi là ...

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

tiếp theo là (từ bên trong môi trường ảo)

pip install mysqlclient

Tôi thực sự không thích phải sử dụng cài đặt dành cho nhà phát triển khi tôi đang cố gắng thiết lập một máy chủ web mới, nhưng tiếc là cấu hình này là con đường thoải mái duy nhất mà tôi có thể thực hiện.


Nếu bạn không có gói '-dev' và trình biên dịch, bạn không thể cài đặt bất kỳ mô-đun Python nào có thành phần mở rộng C cần được biên dịch. Lựa chọn duy nhất của bạn sẽ là sử dụng một hộp xây dựng riêng có các bit bổ sung và tạo các tệp bánh xe Python. Sau đó, sao chép các bánh xe vào hệ thống mục tiêu của bạn và thay vào đó cài đặt các gói từ bánh xe.
Graham Dumpleton

3

Mặc dù câu trả lời của @Edward van Kuik là đúng, nhưng nó không tính đến vấn đề với virtualenv v1.7 trở lên .

Đặc biệt cài đặt python-mysqldbthông qua aptUbuntu đặt nó dưới /usr/lib/pythonX.Y/dist-packages, nhưng đường dẫn này không được bao gồm theo mặc định trong virtualenv'ssys.path .

Vì vậy, để giải quyết điều này , bạn nên tạo virtualenv của mình với các gói hệ thống bằng cách chạy một cái gì đó như:

virtualenv --system-site-packages .venv


0

Có rất nhiều lỗi liên quan đến quyền và những gì không. Bạn có thể muốn thử điều này:

xcode-select --install

0
yum install MySQL-python.x86_64

đã làm cho tôi.


0

Trong ubuntu 20, bạn có thể thử điều này:

sudo apt-get install libmysqlclient-dev
sudo apt-get install gcc
pip install mysqlclient
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.