Lỗi tên mô-đun trong Python là gì?

Ở trên, chúng tôi thấy rằng Foo.bar[] không hoạt động, đó là vì chúng tôi chỉ có quyền truy cập vào mô-đun foo chứ không phải lớp bên trong nó. Để truy cập lớp này, thay vào đó, chúng ta có thể thực hiện foo.Foo.bar[]. Trong trường hợp này, foo là tên mô-đun và Foo là tên lớp

Bạn sẽ gặp vấn đề tương tự nếu vỏ của lớp giống với mô-đun, bạn sẽ nhận được một lỗi khác

2] Thay đổi nhập để tải lớp trực tiếp

Với ví dụ được hiển thị trong , quá trình nhập trong vòng main có thể được thay đổi để thực hiện cuộc gọi. Chúng tôi chỉ cần sử dụng định dạng sau from import . Vì vậy, trong ví dụ của chúng tôi, đây sẽ là

Lỗi Python ImportError: cannot import name xảy ra khi một lớp đã nhập không thể truy cập được hoặc nằm trong vòng phụ thuộc.  

Nguyên nhân gây ra ImportError. Không thể nhập tên

Lỗi này thường xảy ra khi không thể nhập một lớp do một trong những lý do sau

  • Lớp đã nhập nằm trong một phụ thuộc vòng tròn
  • Lớp đã nhập không khả dụng hoặc chưa được tạo
  • Tên lớp đã nhập bị sai chính tả
  • Lớp đã nhập từ một mô-đun bị đặt sai vị trí
  • Lớp đã nhập không có sẵn trong thư viện Python

Lỗi nhập Python. Ví dụ về tên không thể nhập

Đây là một ví dụ về Python ImportError: cannot import name bị ném do phụ thuộc vòng tròn. Hai mô-đun python

test1.pytest2.py được tạo ra để đạt được điều này

kiểm tra1. py

from test2 import Class2
class Class1:
    obj = Class2[]

kiểm tra2. py

from test1 import Class1
class Class2:
    obj = Class1[]

Trong ví dụ trên, việc khởi tạo của obj trong test1 phụ thuộc vào test2obj trong test2 phụ thuộc vào test1. Đây là một phụ thuộc vòng tròn vì cả hai tệp đều cố tải lẫn nhau. Do đó, việc chạy test1.py [hoặc test2.py] gây ra lỗi ImportError: cannot import name

Traceback [most recent call last]:
  File "test1.py", line 1, in 
    from test2 import Class2
  File "test2.py", line 1, in 
    from test1 import Class1
  File "test1.py", line 1, in 
    from test2 import Class2
ImportError: cannot import name 'Class2' from partially initialized module 'test2' [most likely due to a circular import] [test2.py]

Cách khắc phục ImportError. Không thể nhập tên trong Python

Có thể sửa lỗi ImportError: cannot import name bằng các phương pháp sau, tùy thuộc vào nguyên nhân gây ra lỗi

  • Nếu lỗi xảy ra do phụ thuộc vòng tròn, thì có thể khắc phục bằng cách chuyển các lớp đã nhập sang tệp thứ ba và nhập chúng từ tệp này
  • Nếu lỗi xảy ra do tên sai chính tả, tên của lớp trong tệp Python cần được xác minh và sửa.  
  • Nếu lớp đã nhập không có sẵn hoặc chưa được tạo, tệp cần được kiểm tra để đảm bảo rằng lớp đã nhập tồn tại trong tệp. Nếu không, nó nên được tạo ra
  • Nếu lớp đã nhập từ một mô-đun bị đặt sai vị trí, cần đảm bảo rằng lớp đó được nhập từ đúng mô-đun

Theo dõi, phân tích và quản lý lỗi với Rollbar

Quản lý lỗi và ngoại lệ trong mã của bạn là một thách thức. Nó có thể làm cho việc triển khai mã sản xuất trở thành một trải nghiệm đáng sợ. Khả năng theo dõi, phân tích và quản lý lỗi trong thời gian thực có thể giúp bạn tiến hành một cách tự tin hơn. Rollbar tự động theo dõi và xử lý lỗi, giúp việc sửa lỗi Python trở nên dễ dàng hơn bao giờ hết. Thử nó ngay hôm nay

Bài viết sau đây cung cấp một phác thảo cho Python NameError. NameError là một loại lỗi trong python xảy ra khi thực thi một hàm, biến, thư viện hoặc chuỗi không có dấu ngoặc kép đã được nhập mã mà không có bất kỳ Khai báo nào trước đó. Khi trình thông dịch, khi thực thi, không thể xác định tên toàn cầu hoặc tên cục bộ, nó sẽ đưa ra lỗi NameError. Có thể xem ở dòng cuối cùng của thông báo lỗi để hiểu NameError nơi hàm, biến, gói hoặc chuỗi chưa được khai báo sẽ được hiển thị trong thông báo cho biết hàm, gói, biến tương ứng “không được xác định”

Cú pháp của tên PythonError

Khi viết một hàm có tên, chúng ta thường quên gọi chính xác tên hàm sau này, điều này sẽ dẫn đến NameError

Bắt đầu khóa học phát triển phần mềm miễn phí của bạn

Phát triển web, ngôn ngữ lập trình, kiểm thử phần mềm và những thứ khác

Gói phát triển phần mềm tất cả trong một[hơn 600 khóa học, hơn 50 dự án]

Giá bán
Xem các khóa học

Hơn 600 khóa học trực tuyến. hơn 50 dự án. Hơn 3000 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập trọn đời
4. 6 [85.698 xếp hạng]

Thí dụ

Mã số

## Functions which return values
def calc_sum[x,y]:
    op = x + y
    return[op]

ss = calc_sum[5,10]
print[ss]

đầu ra

Đối với chức năng tương tự, hãy xem NameError

Mã số

## Functions which return values
def calc_sum[x,y]:
    op = x + y
    return[op]

ss = calc_su[5,10]
print[ss]

đầu ra

Ban đầu nó được viết để thực hiện một số thao tác giữa hai số và được đặt tên là calc_sum, nhưng khi gọi nó, chúng tôi đã sử dụng tên calc_su, vì vậy nó không được xác định trước đó và nó sẽ gửi cho chúng tôi một lỗi NameError

NameError hoạt động như thế nào?

Khi làm việc với các biến do người dùng định nghĩa trong mã hóa, NameError thường xảy ra do khó xác định các giá trị cục bộ/toàn cục cho trình thông dịch

Thí dụ

Mã số

l1 = [1,2,5,8,9]
l2 = [1,5.6,"hello"] # mix of data types
l1[1] = 100 # muting the 1st position of l1 to 100
print[l1]
del l1[2] # delete from a position 2
print[l1]

đầu ra

Mã số

l1 = [1,2,5,8,9]
l2 = [1,5.6,"hello"] # mix of data types
l1[1] = 100 # muting the 1st position of l1 to 100
print[l1]
del l[2] # delete from a position 2

Ở đây chúng tôi đang thực hiện thao tác xóa trên một biến l không được xác định

Chỉ l1 & l2 đã được xác định và trình thông dịch chỉ có thể xác định các biến l1 & l2. Vì vậy, nếu chúng tôi hoạt động trên l, không được xác định, nó sẽ ném cho chúng tôi một NameError

đầu ra

Có những trường hợp NameError cũng xảy ra trong các thao tác được thực hiện với thư viện python hoặc gói. Trường hợp nếu chúng tôi bỏ lỡ nhập gói hoặc thư viện hoặc nếu chúng tôi chưa xác định tên của gói hoặc thư viện đó và khi thực hiện một thao tác bằng thư viện đó, chúng tôi sẽ nhận được NameError

Thí dụ

Mã số

l10 = [1,2,6,7,4,5,7,8,6,3]
l11 = [1,2,6,7,4,5,7,8,6,3,1000]
## numpy operations
np.mean[l11]
np.median[l11]
np.std[l11]

đầu ra

Chúng ta chưa import thư viện numpy dưới dạng np, khi thực hiện thao tác sẽ thấy NameError

Mã số

________số 8_______

đầu ra

Một loại NameError khác xảy ra khi chúng ta không thể chèn một giá trị chuỗi bên trong dấu ngoặc kép và trình thông dịch xác định nó là một biến và đưa ra một NameError

Thí dụ

Mã số

print['Its a Beautiful day']
name=['Bala']
print[name,'Its a Beautiful day']

đầu ra

Mã số

Error,
print['Its a Beautiful day']
name=[Bala]
print[name,'Its a Beautiful day']

Ở đây chúng tôi không đặt chuỗi bên trong dấu ngoặc kép, vì vậy bảng điều khiển sẽ ném cho chúng tôi NameError

đầu ra

Tránh NameErrors trong Python

Có thể dễ dàng tránh được NameError bằng cách sử dụng kỹ thuật xử lý Lỗi Python hoặc xử lý ngoại lệ, cho người dùng biết về NameError đang xảy ra trong khối mã mà không thực sự gây ra lỗi

Các lỗi phổ biến nhất xảy ra trong python là SyntaxError & NameError. Khi chúng tôi viết mã của mình và nếu ngôn ngữ lập trình không chấp nhận nó, thì sẽ phát sinh SyntaxError. SyntaxError có thể được sửa chữa bằng cách làm theo các nguyên tắc ngôn ngữ lập trình theo cách mà trình thông dịch có thể hiểu được. NameError có thể tránh được bằng cách sử dụng một kỹ thuật gọi là Xử lý ngoại lệ

Mã số

def my_func[]:
    x="Name Error Exception"
    print[y]
my_func[]   

đầu ra

Ngay cả khi chúng tôi viết mã mà không có bất kỳ Lỗi cú pháp nào, chương trình có thể dẫn đến lỗi thời gian chạy. Chúng được gọi là Ngoại lệ. Có rất nhiều ngoại lệ tích hợp sẵn trong Python và một ngoại lệ như vậy là NameError Exception

Trong Python, ngoại lệ NameError xuất hiện khi chúng tôi cố gắng sử dụng hoặc tham chiếu đến một tên không được xác định cục bộ hoặc toàn cầu

Thí dụ

Để xử lý ngoại lệ NameError

Mã số

try:
    x="Name Error Exception"
    print[y]
except NameError:    
    print["Name Error Exception is Caught"]

đầu ra

Khối try cho phép chúng tôi kiểm tra và xem mã của chúng tôi có đưa ra lỗi hay không. Chúng tôi có thể sử dụng khối này để theo dõi mã của mình để xem liệu có khả năng xảy ra lỗi hay không

Khối ngoại trừ sẽ cho phép chúng tôi viết phần mà chúng tôi muốn xử lý lỗi. Chúng tôi có thể sử dụng khối này để biểu thị người dùng muốn gặp sự cố mà không có lỗi ném bảng điều khiển

Chúng tôi cũng có thể sử dụng khối Cuối cùng cùng với thử và ngoại trừ để liên tục chạy mã mà không bị chấm dứt bằng cách chỉ hiển thị thông báo ngoại lệ

Thí dụ

Cuối cùng, chặn

Mã số

## Functions which return values
def calc_sum[x,y]:
    op = x + y
    return[op]

ss = calc_su[5,10]
print[ss]
0

đầu ra

Vì tên được ký hiệu nên mã đã chạy thành công mà không ném ngoại lệ. Bên dưới, chúng tôi đã xóa tên được biểu thị, chúng tôi có thể thấy thông báo ngoại lệ được ném

Mã số

## Functions which return values
def calc_sum[x,y]:
    op = x + y
    return[op]

ss = calc_su[5,10]
print[ss]
1

đầu ra

Khối cuối cùng cho phép chúng tôi chạy mã mà không bị chấm dứt vì tên biểu thị đã bị xóa. Các khối cuối cùng sẽ được thực thi ngay cả khi khối thử đưa ra thông báo ngoại lệ. Chúng ta có thể sử dụng kỹ thuật này để khắc phục NameError

Phần kết luận

Điều cần ghi nhớ chính trong python NameError là trình thông dịch không xác định được tên hoặc văn bản mà chúng tôi đã sử dụng trong mã của mình. Chúng ta đã xem chi tiết về NameError xảy ra trong ngôn ngữ lập trình Python và các kỹ thuật khắc phục NameError

Bài viết được đề xuất

Đây là hướng dẫn về Python NameError. Ở đây chúng tôi thảo luận về cách NameError hoạt động và tránh NameErrors trong python, tương ứng. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –

Tên mô-đun trong Python là gì?

Trong Python, Mô-đun đơn giản là các tệp có phần “. py” tiện ích mở rộng chứa mã Python có thể được nhập bên trong Chương trình Python khác . Nói một cách đơn giản, chúng ta có thể coi một mô-đun giống như một thư viện mã hoặc một tệp chứa một tập hợp các chức năng mà bạn muốn đưa vào ứng dụng của mình.

Lỗi tên có nghĩa là gì trong Python?

NameError trong Python là gì? . Một số lỗi phổ biến gây ra lỗi này là. Sử dụng tên biến hoặc hàm chưa được xác định. occurs when you try to use a variable, function, or module that doesn't exist or wasn't used in a valid way. Some of the common mistakes that cause this error are: Using a variable or function name that is yet to be defined.

Tại sao Python không thể tìm thấy mô-đun của tôi?

Điều này là do phiên bản Python mà bạn đang chạy tập lệnh không được định cấu hình để tìm kiếm các mô-đun mà bạn đã cài đặt chúng. This happens when you use the wrong installation of pip to install packages.

Tên mô-đun Python ở đâu?

Một mô-đun có thể tìm ra tên mô-đun của chính nó bằng cách xem biến toàn cục được xác định trước __name__ .

Chủ Đề