Khi bạn cố gắng nhập một mô-đun trong tệp Python, Python sẽ cố gắng giải quyết mô-đun này theo một số cách. Đôi khi, Python ném ModuleNotFoundLỗi sau đó. Lỗi này có ý nghĩa gì trong Python?
Đúng như tên gọi, lỗi này xảy ra khi bạn đang cố truy cập hoặc sử dụng một mô-đun không thể tìm thấy. Trong trường hợp tiêu đề, “mô-đun có tên con trăn” không thể được tìm thấy.
con trăn ở đây có thể là bất kỳ mô-đun nào. Đây là một lỗi khi tôi cố gắng nhập một numpys
mô-đun không thể tìm thấy:
import numpys as np
Đây là lỗi trông như thế nào:

Dưới đây là một vài lý do tại sao một mô-đun có thể không được tìm thấy:
- bạn chưa cài đặt mô-đun mà bạn đã thử nhập trên máy tính của mình
- bạn đã viết sai một mô-đun (vẫn liên kết trở lại điểm trước đó, mô-đun sai chính tả đó chưa được cài đặt)…ví dụ: chính tả
numpy
nhưnumpys
trong quá trình nhập khẩu - bạn sử dụng cách viết hoa không chính xác cho một mô-đun (vẫn liên kết trở lại điểm đầu tiên)…ví dụ: chính tả
numpy
nhưNumPy
trong quá trình nhập sẽ đưa ra lỗi không tìm thấy mô-đun vì cả hai mô-đun đều “không giống nhau” - bạn đang nhập một mô-đun bằng đường dẫn sai
Cách sửa lỗi ModuleNotFoundError trong Python
Như tôi đã đề cập trong phần trước, có một số lý do khiến một mô-đun có thể không được tìm thấy. Dưới đây là một số giải pháp.
1. Đảm bảo rằng các mô-đun đã nhập đã được cài đặt
Lấy ví dụ, numpy
. Bạn sử dụng mô-đun này trong mã của mình trong tệp có tên “test.py” như sau:
import numpy as np
arr = np.array([1, 2, 3])
print(arr)
Nếu bạn cố chạy mã này với python test.py
và bạn nhận được lỗi này:
ModuleNotFoundError: No module named "numpy"
Sau đó, rất có thể là numpy
mô-đun chưa được cài đặt trên thiết bị của bạn. Bạn có thể cài đặt mô-đun như thế này:
python -m pip install numpy
Khi được cài đặt, mã trước đó sẽ hoạt động chính xác và bạn nhận được kết quả được in trong thiết bị đầu cuối của mình:
[1, 2, 3]
2. Đảm bảo rằng các mô-đun được viết đúng chính tả
Trong một số trường hợp, bạn có thể đã cài đặt mô-đun mình cần, nhưng việc cố gắng sử dụng mô-đun đó vẫn gây ra lỗi ModuleNotFound. Trong những trường hợp như vậy, có thể bạn đã viết sai chính tả. Lấy ví dụ, mã này:
import nompy as np
arr = np.array([1, 2, 3])
print(arr)
Ở đây, bạn đã cài đặt numpy
nhưng chạy đoạn mã trên sẽ gây ra lỗi này:
ModuleNotFoundError: No module named "nompy"
Lỗi này là do viết sai chính tả numpy
mô-đun như nompy
(có thư o thay vì bạn). Bạn có thể sửa lỗi này bằng cách viết đúng mô-đun.
3. Đảm bảo rằng các mô-đun được đặt đúng vỏ
Tương tự như vấn đề viết sai chính tả đối với lỗi không tìm thấy mô-đun, cũng có thể là do bạn viết đúng chính tả mô-đun nhưng lại viết sai cách viết hoa. Đây là một ví dụ:
import Numpy as np
arr = np.array([1, 2, 3])
print(arr)
Đối với mã này, bạn có numpy
đã cài đặt nhưng chạy đoạn mã trên sẽ báo lỗi này:
ModuleNotFoundError: No module named 'Numpy'
Do sự khác biệt về vỏ bọc, numpy
và Numpy
là các mô-đun khác nhau. Bạn có thể sửa lỗi này bằng cách đánh vần mô-đun trong cách viết hoa đúng.
4. Đảm bảo rằng bạn sử dụng đúng đường dẫn
Trong Python, bạn có thể nhập mô-đun từ các tệp khác bằng cách sử dụng tuyệt đối hoặc liên quan đến những con đường. Đối với ví dụ này, tôi sẽ tập trung vào các đường dẫn tuyệt đối.
Khi bạn cố gắng truy cập một mô-đun từ đường dẫn sai, bạn cũng sẽ nhận được mô-đun không tìm thấy ở đây. Đây là một ví dụ:
Giả sử bạn có một thư mục dự án có tên kiểm tra. Trong đó, bạn có hai thư mục demoA và bản demoB.
demoA có một __init__.py
tệp (để hiển thị đó là gói Python) và test1.py
mô-đun.
demoA cũng có một __init__.py
tập tin và một test2.py
mô-đun.
Đây là cấu trúc:
└── test
├── demoA
├── __init__.py
│ ├── test1.py
└── demoB
├── __init__.py
├── test2.py
Đây là nội dung của test1.py
:
def hello():
print("hello")
Và giả sử bạn muốn sử dụng khai báo này hello
chức năng trong test2.py
. Đoạn mã sau sẽ đưa ra lỗi không tìm thấy mô-đun:
import demoA.test as test1
test1.hello()
Mã này sẽ đưa ra lỗi sau:
ModuleNotFoundError: No module named 'demoA.test'
Lý do cho điều này là chúng tôi đã sử dụng sai đường dẫn để truy cập vào test1
mô-đun. Con đường đúng phải là demoA.test1
. Khi bạn sửa lỗi đó, mã sẽ hoạt động:
import demoA.test1 as test1
test1.hello()
# hello
kết thúc
Để giải quyết một mô-đun đã nhập, Python kiểm tra các vị trí như thư viện sẵn có, mô-đun đã cài đặt và mô-đun trong dự án hiện tại. Nếu nó không thể giải quyết mô-đun đó, nó sẽ ném ModuleNotFoundLỗi.
Đôi khi bạn chưa cài đặt mô-đun đó, vì vậy bạn phải cài đặt nó. Đôi khi, đó là một mô-đun viết sai chính tả hoặc đặt tên sai cách viết hoa hoặc sai đường dẫn. Trong bài viết này, tôi đã chỉ ra bốn cách khả thi để khắc phục lỗi này nếu bạn gặp phải.
Tôi hy vọng bạn đã học được từ nó 🙂