Tôi đang gặp vấn đề với nhập khẩu Python. Tôi đã tạo một mô -đun để nhập thuận tiện một vài lớp bên trong mô -đun với một câu lệnh. Tôi đặt tất cả các bản nhập khẩu của mình vào bên trong phần của mô -đun đó, nhưng dường như nó không hoạt động.
maindir\
- driver.py
- Utility\
- __init__.py
- UtilityClasses.py
Cấu trúc thư mục của tôi trông giống như ở trên. Bên trong các lớp tiện ích, tôi có một lớp mà tôi đã tạo ra được gọi là MyClass.
Bên trong tệp init trong thư mục tiện ích, tôi có mã có nội dung:
import UtilityClasses
from UtilityClasses import MyClass
Bên trong Driver.py tôi có mã có nội dung:
import Utility
myVar = MyClass[param1]
Tuy nhiên, khi tôi chạy điều này, tôi gặp một lỗi khi nói với tôi rằng tên MyClass không được xác định.
Đã hỏi ngày 16 tháng 3 năm 2015 lúc 2:53Mar 16, 2015 at 2:53
4
Trong
import UtilityClasses
from UtilityClasses import MyClass
0, bạn có thể làmfrom UtilityClasses import *
from SomeOtherFile import *
Điều này sẽ nhập mọi thứ từ
import UtilityClasses
from UtilityClasses import MyClass
1 và import UtilityClasses
from UtilityClasses import MyClass
2.Nhưng bạn vẫn phải truy cập nó bằng tên mô -đun
Cập nhật: Bạn có thể truy cập mọi thứ như thế này
Trong
import UtilityClasses
from UtilityClasses import MyClass
3:from Utility import *
a = MyClass[]
b = ClassInSomeOtherFile[]
Đã trả lời ngày 16 tháng 3 năm 2015 lúc 3:35Mar 16, 2015 at 3:35
KedarkedarKedar
1.61810 Huy hiệu bạc20 Huy hiệu đồng10 silver badges20 bronze badges
3
Ma cua ban
import Utility
myVar = MyClass[param1]
Tất nhiên sẽ không hoạt động -
import UtilityClasses
from UtilityClasses import MyClass
4 không được đề cập đến đâu và nó sẽ không đến một cách kỳ diệu từ hư không. Rõ ràng là tốt hơn tiềm ẩn:from Utility import MyClass
myVar = MyClass[param1]
Nên làm việc như một sự quyến rũ!
Đã trả lời ngày 16 tháng 3 năm 2015 lúc 4:20Mar 16, 2015 at 4:20
Alex Martellialex MartelliAlex Martelli
830K165 Huy hiệu vàng1205 Huy hiệu bạc1385 Huy hiệu Đồng165 gold badges1205 silver badges1385 bronze badges
3
Lỗi Python
import UtilityClasses
from UtilityClasses import MyClass
5 xảy ra khi một lớp nhập khẩu không thể truy cập được hoặc nằm trong một phụ thuộc tròn. & NBSP;Nguyên nhân gây ra bản nhập khẩu: không thể nhập tên
Lỗi này thường xảy ra khi một lớp không thể được nhập do một trong những lý do sau:
- Lớp nhập khẩu là trong một phụ thuộc tròn.
- Lớp nhập khẩu không có sẵn hoặc không được tạo.
- Tên lớp nhập khẩu là sai chính tả.
- Lớp nhập từ một mô -đun bị đặt sai chỗ.
- Lớp nhập khẩu không có sẵn trong thư viện Python.
Python Irtunterror: Không thể nhập ví dụ tên
Ở đây, một ví dụ về Python
import UtilityClasses
from UtilityClasses import MyClass
5 bị ném do sự phụ thuộc tròn. Hai mô -đun Pythonimport UtilityClasses
from UtilityClasses import MyClass
7 và import UtilityClasses
from UtilityClasses import MyClass
8 được tạo ra để đạt được điều này:test1.py:
from test2 import Class2
class Class1:
obj = Class2[]
test2.py:
from test1 import Class1
class Class2:
obj = Class1[]
Trong ví dụ trên, việc khởi tạo
import UtilityClasses
from UtilityClasses import MyClass
9 trong import Utility
myVar = MyClass[param1]
0 phụ thuộc vào import Utility
myVar = MyClass[param1]
1 và import UtilityClasses
from UtilityClasses import MyClass
9 trong import Utility
myVar = MyClass[param1]
1 phụ thuộc vào import Utility
myVar = MyClass[param1]
0. Đây là một phụ thuộc tròn vì cả hai tệp đều cố gắng tải lẫn nhau. Do đó, chạy import UtilityClasses
from UtilityClasses import MyClass
7 [hoặc import UtilityClasses
from UtilityClasses import MyClass
8] gây ra lỗi import UtilityClasses
from UtilityClasses import MyClass
5: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 sửa lỗi nhập khẩu: Không thể nhập tên trong Python
import UtilityClasses
from UtilityClasses import MyClass
5 có thể được sửa bằng cách sử dụng các phương pháp sau, tùy thuộc vào nguyên nhân của lỗi:- Nếu lỗi xảy ra do sự phụ thuộc tròn, nó có thể được giải quyết 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, tên của lớp trong tệp Python phải được xác minh và sửa chữa. & NBSP;
- Nếu lớp được nhập không có sẵn hoặc không được tạo, tệp phải được kiểm tra để đảm bảo rằng lớp nhập được nhập trong tệp. Nếu không, nó nên được tạo ra.
- Nếu lớp được 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ừ mô -đun chính xác.
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 một trải nghiệm đáng sợ. Có thể theo dõi, phân tích và quản lý các lỗi trong thời gian thực có thể giúp bạn tiến hành tự tin hơn. Rollbar tự động hóa việc theo dõi và xử lý lỗi, giúp sửa lỗi Python dễ dàng hơn bao giờ hết. Thử nó ngay hôm nay!