Đây là cấu trúc tập tin của tôi:Nhập một mô-đun tùy chọn
[mylibrary]
__init__.py
[codecs]
__init__.py < this is the file that we're talking about
optional.py
Bây giờ tôi có mã này trong đánh dấu __init__.py
:
def load_optional_codecs():
try:
from mylibrary.codecs import optional
# do stuff with optional
except ImportError:
pass
Có một vấn đề với điều này. Nếu mô-đun optional
có chứa một ngoại lệ nhập, nó sẽ tự động không thành công. Có cách nào để nhập khẩu một mô-đun tùy chọn mà không im lặng bất kỳ ngoại lệ nào từ mô-đun không?
Điều này có vẻ như một trường hợp tối nghĩa, nhưng tôi đã gặp phải một lỗi khó chịu do ngoại lệ bị tắt tiếng và tôi muốn ngăn điều đó xảy ra trong tương lai.
Bạn có thể báo cáo ngoại lệ cho người dùng hoặc ghi nhật ký thay vì 'pass' trong khối' except', nhưng nếu lỗi nhập không đưa ra lỗi khó chịu, tôi cho rằng gần như chắc chắn không phải là "tùy chọn". – geoffspear
@Wooble: không, 'từ mylibrary.codecs nhập tùy chọn' không thành công. Vấn đề là module 'optional' đã nhập một module bị lỗi (do lỗi lập trình), nhưng lỗi đó đã bị tắt tiếng. – orlp