Trong khi làm việc trên các dự án lớn, chúng ta có thể gặp phải tình huống muốn nhập một mô-đun từ một thư mục khác. Nhưng vì một số lý do, mô-đun có thể không được nhập chính xác. Bây giờ đừng lo lắng nếu mô-đun của bạn không được nhập chính xác. Trong bài viết này, chúng tôi sẽ thảo luận về cách nhập mô-đun từ thư mục khác.
Ghi chú. Một mô-đun chỉ là một chương trình Python kết thúc bằng. py và một thư mục chứa mô-đun trở thành một gói
Cấu trúc thư mục
- Folder_1 - main.py - Folder_2 - module1.py
Giả sử, để nhập cách nhập tệp trong Python, chúng ta có hai thư mục khác nhau, một chứa chính. py là tệp Python chính của chúng tôi, nơi chúng tôi muốn nhập module1 từ Folder_2.
Mô-đun 1. chứa hai chức năng được gọi là add và Odd_even. Hàm add sẽ nhận hai đối số và trả về phép cộng của chúng. Hàm chẵn lẻ sẽ chỉ nhận một đối số và in Even nếu số chẵn hoặc in Odd nếu số lẻ
mô-đun 1. py
Python3
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py2
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py3
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py4
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py5
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py6
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py7____18
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py9
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py0
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py1
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py3
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py3
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py5
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py5
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py6_______17
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py8
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py9
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py9
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py21
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py22
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py23
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py24
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py25
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py26
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py27
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py5
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py29____122
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py23
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py24
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py25
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py34
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py27
Nếu chúng ta chỉ cố gắng nhập module1 từ Thư mục_2, chúng ta sẽ gặp phải lỗi sau
chính. py
Python3
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py36
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py37
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py38
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py39
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py40
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py41
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py27
đầu ra
Lỗi
ModuleNotFoundError, vì theo mặc định, trình thông dịch Python sẽ chỉ kiểm tra tệp trong thư mục hiện tại và chúng tôi cần đặt đường dẫn tệp theo cách thủ công để nhập các mô-đun từ thư mục khác. Chúng ta có thể làm điều này bằng nhiều cách khác nhau. Những cách này được thảo luận chi tiết dưới đây
Phương pháp 1. Nhập mô-đun từ thư mục khác bằng mô-đun sys
Chúng ta có thể sử dụng sys. path để thêm đường dẫn của thư mục khác mới [thư mục từ nơi chúng tôi muốn nhập mô-đun] vào đường dẫn hệ thống để Python cũng có thể tìm mô-đun trong thư mục đó nếu nó không tìm thấy mô-đun trong thư mục hiện tại của nó. như hệ thống. đường dẫn thuộc lớp loại danh sách, vì vậy, chúng ta có thể dễ dàng sử dụng phương thức chèn để thêm đường dẫn thư mục
Python3
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py43
________ 144 ________ 145 ________ 137 ________ 147
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py37
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py49
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py50
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py51
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py21____153
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py54
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py27
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py56
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py57
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py39
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py59
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py41____127
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py62
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py24
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py25
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py65
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py66
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py8
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py53
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py8
- project - Folder_1 - main.py - Folder_2 - subfolder - new.py70
đầu ra
sử dụng sys
Phương pháp 2. Sử dụng biến môi trường PYTHONPATH
Tương tự, nếu bạn không muốn sử dụng module sys để đặt đường dẫn cho thư mục mới. Bạn có thể chỉ định đường dẫn thư mục cho biến PYTHONPATH và chương trình của bạn vẫn hoạt động.
Trong Linux, chúng ta có thể sử dụng lệnh sau trong terminal để đặt đường dẫn
xuất PYTHONPATH=’đường dẫn/đến/thư mục’
Trong hệ thống Windows
SET PYTHONPATH=”đường dẫn/đến/thư mục”
Để xem biến PYTHONPATH có giữ đường dẫn của thư mục mới hay không, chúng ta có thể sử dụng lệnh sau