Khi một người cố gắng nhập mô-đun foo
trong khi đang ở trong thư mục nguồn, người nhận được thông báo ImportError
khá khó hiểu: ImportError: No module named foo
.Bắt python 'ImportError' nếu nhập từ thư mục nguồn
Làm cách nào tôi có thể dễ dàng nắm bắt trường hợp này và trả lại một thông báo mang tính thông tin hơn, ví dụ: 'Xin vui lòng không tải module foo từ thư mục nguồn'?
Có __init__.py
, tôi sẽ bắt đầu với:
try:
from _foo import *
except ImportError:
## check whether in the source directory...
Vì vậy, tôi muốn phân biệt các nguyên nhân khác nhau cho một ImportError
(ví dụ vì một module có tên foo
không được cài đặt tại tất cả), và phát hiện các trường hợp trong đó setup.py
nằm trong thư mục hiện tại. Điều gì sẽ là một cách thanh lịch để làm điều này?
Cảm ơn câu trả lời nhanh. Tôi đang tìm kiếm một cách để kiểm tra xem 'ImportError' được nâng lên bởi' setup.py' được đặt trong thư mục hiện tại và phân biệt nó với các trường hợp khác. – Julian
Vì vậy, hãy sử dụng tùy chọn thứ hai mà tôi đã đề cập. Bạn biết bạn đang cố gắng nhập gói nào (như một phương sách cuối cùng, trích xuất nó từ thông báo 'ImportError') và bạn có thể lấy tên thư mục hiện tại. Điều kiện bạn đang tìm kiếm tương ứng với gói và tên thư mục giống nhau, phải không? – isedev