Các mô -đun là không thể thiếu đối với ngôn ngữ Python. Các mô -đun cho phép bạn chia mã của mình thành nhiều tệp. Điều này giúp duy trì khả năng đọc và khả năng bảo trì của một cơ sở mã.
Nó phổ biến để gặp một ModulenotFounderror khi làm việc với các mô -đun. Trong hướng dẫn này, chúng tôi nói về ý nghĩa của lỗi này và tại sao nó được nêu ra. Chúng tôi đi qua ba giải pháp khả thi để giúp bạn vượt qua lỗi này.
Tìm Bootcamp của bạn phù hợp
- Karma nghề nghiệp phù hợp với bạn với bootcamp công nghệ hàng đầu
- Truy cập các học bổng và khóa học chuẩn bị độc quyền
Chọn mối quan tâm của bạn họ Tên điện thoại Email Tên của bạn
First name
Last name
Email
Phone number
Bằng cách tiếp tục, bạn đồng ý với các điều khoản dịch vụ và chính sách quyền riêng tư của chúng tôi và bạn đồng ý nhận được các ưu đãi và cơ hội từ Karma nghề nghiệp qua điện thoại, tin nhắn văn bản và email.
ModulenotFounderror là gì?
Một modulenotfounderror được nâng lên khi Python không thể nhập thành công một mô -đun.
Thông báo lỗi đầy đủ trông giống như thế này:
ModuleNotFoundError: No module named 'your_module_name'
Lỗi này gặp phải khi bạn quên cài đặt một phụ thuộc cho một dự án. Bởi vì bạn đã cài đặt sự phụ thuộc, Python không biết nơi để định vị nó.
ModulenotFounderrors xuất hiện trong các mô-đun do người dùng xác định. Thông thường, lỗi này là do nhập các tệp tương đối khi không được phép.
Kịch bản ví dụ: Không được cài đặt phụ thuộc
Hãy xem một tệp có tên app.py sử dụng gói đẹp:
from bs4 import BeautifulSoup url = "//careerkarma.com" print[url]
Hãy để cố gắng chạy tệp này:
Traceback [most recent call last]: File "app.py", line 1, in from bs4 import BeautifulSoup ModuleNotFoundError: No module named 'bs4'
Có vẻ như Python 3 không thể tìm thấy mô -đun BS4. Bởi vì BS4 là một gói bên ngoài, nguyên nhân của lỗi này phải là chúng tôi đã cài đặt mô -đun.
Để giải quyết lỗi này, chúng tôi cài đặt mô -đun BS4:
pip3 install BeautifulSoup4
Mã này cài đặt mô -đun cần thiết cho dự án của chúng tôi.
Lưu ý: Bạn nên đảm bảo bạn sử dụng đúng Trình quản lý gói để cài đặt mô -đun. Bạn không thể cài đặt các mô -đun cho Python 3 bằng PIP và các mô -đun cho Python 2 bằng PIP3. Nếu bạn làm như vậy, trình thông dịch Python có thể không nhận ra rằng bạn đã cài đặt một mô -đun.Python 3 using pip and modules for Python 2 using pip3. If you do, the Python interpreter may not recognize that you have installed a module.
Chạy lại mã của chúng tôi:
Mã của chúng tôi hoạt động!
Kịch bản ví dụ: Các mô-đun do người dùng xác định
Có hai loại nhập khẩu trong Python: Tuyệt đối và tương đối.
Nhập khẩu tuyệt đối là nơi bạn nhập một cái gì đó trên sys.path, giống như gói tích hợp. Nhập khẩu tương đối là nơi bạn nhập khẩu một cái gì đó liên quan đến chương trình mà bạn đang viết.
Nhập khẩu tương đối phải là một phần của gói nếu không chúng không thể chạy.
Tiếp theo, chúng tôi viết một chương trình in một danh sách các loại bánh vào bảng điều khiển. Đầu tiên, chúng tôi tạo một cấu trúc thư mục cho dự án của chúng tôi:
app.py config.py cakes/ main.py
Chúng tôi bắt đầu bằng cách khai báo một danh sách các loại bánh trong tệp Config.py của chúng tôi:
cake_list = ["Double Chocolate Gateau", "Victoria Sponge", "Lemon Cake"]
Tiếp theo, chúng tôi viết tệp Main Main.py của chúng tôi, in những chiếc bánh này vào bảng điều khiển:
def print_cakes[cakes]: for c in cakes: print[c]
Cuối cùng, chúng tôi viết chương trình chính của chúng tôi trong app.py thực hiện mô -đun của chúng tôi:
import main import config main.print_cakes[config.cake_list]
Mã này chạy chức năng
from bs4 import BeautifulSoup url = "//careerkarma.com" print[url]1 bên trong tệp Main Main.py. Chúng tôi nhập khẩu chính và cấu hình trực tuyến để chúng tôi có thể truy cập vào chức năng
from bs4 import BeautifulSoup url = "//careerkarma.com" print[url]1 và danh sách bánh của chúng tôi. Danh sách bánh này được truyền qua chức năng
from bs4 import BeautifulSoup url = "//careerkarma.com" print[url]1 của chúng tôi.
Chạy mã của chúng tôi và xem điều gì sẽ xảy ra:
Traceback [most recent call last]: File "app.py", line 2, in import config ModuleNotFoundError: No module named 'config'
Lỗi này xảy ra vì chúng tôi chưa nhập tệp của mình thành công.
Main Main là trong các mô -đun Cake Cakes. Nó không có trong thư mục làm việc hiện tại của chúng tôi. Chúng tôi biết điều này bởi vì Main Main.py, có trong thư mục Cakes Cakes. Để truy cập mô -đun này, chúng tôi cần nhập tương đối:
from cakes import main import config main.print_cakes[config.cake_list]
Thay vì nhập trực tiếp trực tiếp, chúng tôi nhập khẩu chính từ mô -đun của Cakes Cakes. Hãy để xem những gì xảy ra khi chúng ta chạy lại mã của mình:
from bs4 import BeautifulSoup url = "//careerkarma.com" print[url]0
Mã của chúng tôi in ra danh sách các loại bánh. Chúng tôi đã nhập khẩu Main Main từ các loại bánh ngọt và giải quyết lỗi ModulenotFounderror của chúng tôi.
"Karma nghề nghiệp bước vào cuộc sống của tôi khi tôi cần nó nhất và nhanh chóng giúp tôi kết hợp với bootcamp. Hai tháng sau khi tốt nghiệp, tôi tìm thấy công việc mơ ước của mình phù hợp với các giá trị và mục tiêu của tôi trong cuộc sống!"
Sao Kim, Kỹ sư phần mềm tại Rockbot
Lưu ý rằng chúng tôi nhập mô -đun cấu hình trực tiếp vào mã trực tiếp vào mã của chúng tôi. Điều này là do cấu hình trên mạng có cùng thư mục với chương trình mà chúng tôi đang thực hiện.
Sự kết luận
ModulenotFounderRor được nêu ra khi Python không thể xác định lỗi. Nguyên nhân phổ biến nhất của lỗi này là quên cài đặt mô -đun hoặc nhập mô -đun không chính xác.
Nếu bạn đang làm việc với một mô -đun bên ngoài, bạn phải kiểm tra để đảm bảo bạn đã cài đặt nó. Nếu bạn đang viết một mô-đun do người dùng xác định, bạn phải kiểm tra lại các câu lệnh nhập của mình và đảm bảo rằng tất cả chúng đều nhập các tệp tương đối.
Bây giờ bạn đã sẵn sàng để giải quyết lỗi Python ModulenotFounderror như một chuyên gia!