Làm cách nào để sửa lỗi modulenotfounderror trong python?

ĐẦU TIÊN, nếu bạn muốn có thể truy cập man1. py từ man1test. py AND manModules. py từ man1. py, bạn cần thiết lập đúng các tệp của mình dưới dạng

Các gói là một cách cấu trúc không gian tên mô-đun của Python bằng cách sử dụng “tên mô-đun chấm”. Ví dụ: tên mô-đun

man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
2 chỉ định mô-đun con có tên
man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
3 trong gói có tên
man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
4

...

Khi nhập gói, Python tìm kiếm qua các thư mục trên

man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
5 để tìm thư mục con của gói

Các tệp

man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
6 được yêu cầu để làm cho Python coi các thư mục như chứa các gói;

Bạn cần thiết lập nó thành một cái gì đó như thế này

man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py

THỨ HAI, đối với lỗi "

from Soft.SoftWork.manModules import *
# no change to import statement but need to add Soft to PYTHONPATH

def foo[]:
    print["called foo in man1.py"]
    print["foo call module1 from manModules: " + module1[]]
1" do
from Soft.SoftWork.manModules import *
# no change to import statement but need to add Soft to PYTHONPATH

def foo[]:
    print["called foo in man1.py"]
    print["foo call module1 from manModules: " + module1[]]
2 gây ra trong man1test. py, giải pháp được ghi lại cho vấn đề đó là thêm man1. py thành
man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
5 vì Mans nằm ngoài gói MansTest. Xem từ tài liệu Python. Nhưng nếu bạn không muốn sửa đổi trực tiếp
man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
5, bạn cũng có thể sửa đổi
from Soft.SoftWork.manModules import *
# no change to import statement but need to add Soft to PYTHONPATH

def foo[]:
    print["called foo in man1.py"]
    print["foo call module1 from manModules: " + module1[]]
5

man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
5 được khởi tạo từ những vị trí này

  • Thư mục chứa tập lệnh đầu vào [hoặc thư mục hiện tại khi không có tệp nào được chỉ định]
  • from Soft.SoftWork.manModules import *
    # no change to import statement but need to add Soft to PYTHONPATH
    
    def foo[]:
        print["called foo in man1.py"]
        print["foo call module1 from manModules: " + module1[]]
    
    5 [danh sách tên thư mục, có cùng cú pháp với biến hệ vỏ
    from Soft.SoftWork.manModules import *
    # no change to import statement but need to add Soft to PYTHONPATH
    
    def foo[]:
        print["called foo in man1.py"]
        print["foo call module1 from manModules: " + module1[]]
    
    8]
  • Mặc định phụ thuộc vào cài đặt

THỨ BA, đối với

from Soft.SoftWork.manModules import *
# no change to import statement but need to add Soft to PYTHONPATH

def foo[]:
    print["called foo in man1.py"]
    print["foo call module1 from manModules: " + module1[]]
9 mà bạn nói "là để tạo điều kiện thuận lợi cho câu lệnh nhập đã nói ở trên trong man1. py", đó là cách hoạt động của quá trình nhập. Nếu bạn muốn nhập Soft. SoftLib trong man1. py, bạn phải thiết lập man1. py để tìm Soft. SoftLib và nhập trực tiếp vào đó

Như đã nói, đây là cách tôi làm cho nó hoạt động

người đàn ông1. py

from Soft.SoftWork.manModules import *
# no change to import statement but need to add Soft to PYTHONPATH

def foo[]:
    print["called foo in man1.py"]
    print["foo call module1 from manModules: " + module1[]]

man1test. py

# no need for "from ...MansTest.SoftLib import Soft" to facilitate importing..
from ...Mans import man1

man1.foo[]

người đàn ôngMô-đun. py

man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
0

đầu ra thiết bị đầu cuối

man
|- __init__.py
|- Mans
   |- __init__.py
   |- man1.py
|- MansTest
   |- __init.__.py
   |- SoftLib
      |- Soft
         |- __init__.py
         |- SoftWork
            |- __init__.py
            |- manModules.py
      |- Unittests
         |- __init__.py
         |- man1test.py
1

Theo gợi ý, có thể nghĩ lại mục đích của các tệp SoftLib đó. Đây có phải là một loại "cầu nối" giữa man1. py và man1test. py? . Ngoài ra, nó hơi khó hiểu đối với phần kiểm tra mã [man1. py] để nhập nội dung từ trong thư mục kiểm tra [MansTest]

Python xử lý ModuleNotFoundError như thế nào?

Lỗi ImportError của Python [ ModuleNotFoundError ] cho biết rằng bạn đã cố gắng nhập một mô-đun mà Python không tìm thấy. Nó thường có thể được loại bỏ bằng cách thêm một tệp có tên __init__. py vào thư mục và sau đó thêm thư mục này vào $PYTHONPATH

Điều gì gây ra ModuleNotFoundError?

Một nguyên nhân phổ biến của Lỗi ModuleNotFound. Lỗi không có tên mô-đun đơn giản là do mô-đun bạn đang cố gắng nhập không tồn tại . Điều này có thể xảy ra nếu bạn viết sai chính tả tên mô-đun hoặc nếu bạn đang cố gắng nhập một mô-đun không có trong đường dẫn Python của mình.

Tại sao tôi gặp lỗi nhập trong Python?

Trong Python, ImportError xảy ra khi chương trình Python cố gắng nhập mô-đun không tồn tại trong bảng riêng. Ngoại lệ này có thể tránh được bằng cách xử lý ngoại lệ bằng cách sử dụng các khối thử và ngoại trừ

Điều nào sau đây là lý do cho thông báo lỗi ModuleNotFoundError?

ModuleNotFoundError xuất hiện khi Python không thể xác định vị trí lỗi. Nguyên nhân phổ biến nhất của lỗi này là do quên cài đặt mô-đun hoặc nhập mô-đun không chính xác .

Chủ Đề