Chuyển đến nội dung chính

Khắc phục sự cố thông báo lỗi No module named 'sklearn' trong Python

Tìm hiểu cách nhanh chóng sửa ngoại lệ ModuleNotFoundError: No module named 'sklearn' với hướng dẫn trực tuyến chi tiết, dễ làm theo.
· 5 phút đọc

Khám phá cùng AI

Scikit-learn, thường được viết tắt là sklearn, là một thư viện Python được sử dụng rộng rãi cho các tác vụ phân tích và mô hình hóa dữ liệu, bao gồm cả machine learning. Tuy nhiên, người dùng mới háo hức thử sklearn có thể thấy nản lòng khi gặp một thông báo lỗi lạ, khó xử lý sự cố.

Hướng dẫn này sẽ tìm hiểu cách khắc phục lỗi No module named 'sklearn' để chúng ta có thể quay lại sử dụng bộ sưu tập thuật toán và công cụ phong phú của sklearn cho phân tích và mô hình hóa dữ liệu. Trong quá trình đó, chúng ta cũng sẽ học những kỹ năng tổng quát hơn về khắc phục sự cố cài đặt gói, giúp trở thành lập trình viên Python vững vàng hơn. Nếu cần ôn lại về gói scikit-learn, bạn có thể xem Scikit-Learn Cheat Sheet của chúng tôi trước khi bắt đầu.

Hiểu thông báo lỗi No module named 'sklearn' trong Python

Hãy xem hình dưới đây. Ở đây, chúng tôi thử import sklearn và nhận lại ngoại lệ ModuleNotFoundError.

Ví dụ trong môi trường Python ModuleNotFoundError: No module named 'sklearn'ModuleNotFoundError trong môi trường Python


Như tên gọi gợi ý, ModuleNotFoundError là một loại ImportError cụ thể cho biết Python không thể tìm thấy một mô-đun nhất định. Trong trường hợp này là mô-đun sklearn, nhưng có thể là bất kỳ mô-đun nào, như numpy hoặc pandas.

Khóa học Introduction to Data Science in Python của chúng tôi có nhiều ví dụ về cách import và làm việc với các mô-đun như numpy.  

Nguyên nhân thường gặp của thông báo ModuleNotFoundError trong Python

Bạn có thể gặp lỗi No module named 'sklearn' vì một số lý do phổ biến. Chủ yếu gồm: 

  • Chưa cài đặt sklearn: Nguyên nhân thường gặp nhất là scikit-learn chưa được cài trong môi trường Python của chúng ta.

  • Cài đặt không đúng: Đôi khi scikit-learn đã được cài nhưng không đúng cách, dẫn tới lỗi khi import các mô-đun của thư viện.

  • Cấu hình môi trường hoặc vấn đề đường dẫn Python: Điều này thường xảy ra khi làm việc trong virtual environment hoặc dùng một trình thông dịch Python khác.

May mắn là với cách tiếp cận từng bước, chúng ta thường sẽ giải quyết được vấn đề. Hãy tiếp tục nhé. 

Khắc phục sự cố thông báo lỗi ModuleNotFoundError trong Python

Xác minh việc cài đặt scikit-learn

Bước đầu tiên là đảm bảo scikit-learn đã được cài đúng trong môi trường Python của chúng ta. Có thể thực hiện bằng cách chạy lệnh sau trong terminal hoặc command prompt:

py -m pip list

Lệnh này tạo danh sách theo thứ tự chữ cái của tất cả thư viện đã cài trong môi trường Python. Hãy cuộn danh sách và chắc chắn rằng có scikit-learn trong đó.

Ví dụ danh sách các gói Python đã cài trong Visual Studio Code bằng pipVí dụ danh sách các gói đã cài


Nếu sau khi xem danh sách mà thấy scikit-learn chưa được cài, chúng ta có thể cài bằng lệnh pip hoặc conda tùy môi trường:

pip install scikit-learn
conda install scikit-learn

Để biết thêm về cách dùng các trình quản lý gói như pip, hãy xem Pip Python Tutorial for Package Management. 

Khởi động lại kernel Python

Nếu đang làm việc trong Jupyter Notebook hoặc IDE như Spyder, bước tiếp theo là cân nhắc khởi động lại kernel Python. Lý do là dù chúng ta vừa cài hoặc cài lại scikit-learn, thay đổi có thể chưa sẵn sàng ngay trong phiên tương tác hiện tại. Khởi động lại kernel sẽ nạp lại môi trường và đường dẫn thư viện. Đây là bước đơn giản nhưng thiết yếu có thể sửa được đủ loại lỗi.

Khởi động lại kernel Python Jupyter trong Visual Studio CodeKhởi động lại kernel Jupyter

Kiểm tra biến môi trường và đường dẫn Python

Tiếp theo, chúng ta cần đảm bảo môi trường Python được cấu hình đúng để tìm thấy gói scikit-learn. Bước này rất quan trọng vì giúp Python tìm đúng thư mục chứa gói scikit-learn đã cài.

Hãy kiểm tra biến môi trường PYTHONPATH để chắc chắn rằng nó bao gồm thư mục nơi scikit-learn được cài. Có thể làm điều này bằng cách chạy lệnh sau trong script hoặc trình thông dịch Python:

import sys
print(sys.path)

Bằng cách chạy import sys rồi print(sys.path), chúng ta sẽ thấy các thư mục Python đang kiểm tra. Nếu đường dẫn tới thư mục cài scikit-learn không có trong danh sách, Python sẽ không thể tìm và import scikit-learn.

Cuối cùng, hãy xác minh rằng trình thông dịch Python đang dùng khớp với môi trường nơi scikit-learn đã được cài. Làm theo hướng dẫn chi tiết của chúng tôi để học Cách thiết lập môi trường Khoa học Dữ liệu trên máy tính của bạn. 

Cài đặt lại scikit-learn

Nếu mọi cách khác đều không hiệu quả, hãy cân nhắc cài đặt lại scikit-learn để xử lý các vấn đề tiềm ẩn trong quá trình cài. Có thể tệp đã bị hỏng trong lúc tải xuống hoặc cài đặt do sự cố mạng, gián đoạn, hoặc lỗi đĩa. Cũng có thể có xung đột phụ thuộc từ các lần cài trước.

Chúng ta có thể gỡ cài đặt scikit-learn bằng pip hoặc conda rồi cài lại để đảm bảo cài đặt sạch. 

pip uninstall scikit-learn

pip install scikit-learn
conda uninstall scikit-learn

conda install scikit-learn

Xác minh cài đặt và thiết lập môi trường

Bước cuối cùng, khi tin rằng đã khắc phục lỗi No module named 'sklearn', chúng ta có thể xác minh scikit-learn đã được cài đúng và môi trường được cấu hình chuẩn, để yên tâm.

Có thể làm điều này bằng cách import scikit-learn trong script hoặc trình thông dịch Python và kiểm tra xem có lỗi import không.

import sklearn

print(sklearn.__version__)

Nếu không gặp lỗi nào, scikit-learn đã được cài đúng và bạn có thể bắt đầu dùng nó trong các dự án machine learning của mình!

Kết luận

Gặp lỗi No module named 'sklearn' có thể gây khó chịu, nhưng với các bước khắc phục phù hợp, chúng ta có thể nhanh chóng xử lý và quay lại công việc machine learning. 

Tôi khuyến khích bạn tìm hiểu thêm về lý thuyết nền tảng của machine learning và một số mô hình phổ biến như k-means clustering, logistic regression hoặc svm. Bạn cũng có thể học một số thực hành viết mã tốt để tránh những thông báo lỗi khó chịu về sau.

Amberle McKee

Tác giả

Amberle McKee

Tôi là Tiến sĩ với 13 năm kinh nghiệm làm việc với dữ liệu trong môi trường nghiên cứu sinh học. Tôi phát triển phần mềm bằng nhiều ngôn ngữ lập trình, bao gồm Python, MATLAB và R. Tôi đam mê chia sẻ tình yêu học hỏi của mình với mọi người.

Chủ đề

Liên quan