Tôi biết chủ đề này hơi cũ, nhưng tôi đã mất một thời gian để hiểu được trọng tâm của vấn đề này, vì vậy tôi muốn chia sẻ.
Trong dự án của mình, tôi có tập lệnh chính trong thư mục mẹ, và để phân biệt các mô-đun, tôi đặt tất cả các mô-đun hỗ trợ vào một thư mục con có tên "mô-đun". Trong tập lệnh chính của mình, tôi nhập các mô-đun này như thế này (đối với mô-đun có tên là report.py):
from modules.report import report, reportError
Nếu tôi gọi là kịch bản chính của tôi, thì nó sẽ hiệu quả. TUY NHIÊN, tôi muốn kiểm tra từng mô-đun bằng cách bao gồm một main()
trong mỗi mô-đun và gọi trực tiếp từng mô-đun như:
python modules/report.py
Bây giờ Python phàn nàn rằng nó không thể tìm thấy "một mô-đun được gọi là mô-đun". Chìa khóa ở đây là, theo mặc định, Python bao gồm thư mục của tập lệnh trong đường dẫn tìm kiếm của nó, NHƯNG KHÔNG PHẢI LÀ CWD. Vì vậy, những gì lỗi này nói, thực sự, là "Tôi không thể tìm thấy một thư mục con mô-đun". Lý do là vì không có thư mục con "mô-đun" nào từ thư mục chứa mô-đun report.py.
Tôi thấy rằng giải pháp gọn gàng nhất cho vấn đề này là thêm đường dẫn tìm kiếm CWD trong Python bằng cách bao gồm điều này ở đầu:
import sys
sys.path.append(".")
Bây giờ Python tìm kiếm CWD (thư mục hiện tại), tìm thư mục con "module" và tất cả đều ổn.