Khi một mô-đun được nhập, Python sẽ chạy tất cả mã trong tệp mô-đun. Khi một gói được nhập, Python sẽ chạy tất cả mã trong tệp __init__.py
của gói, nếu tệp đó tồn tại. Tất cả các đối tượng được xác định trong mô-đun hoặc tệp __init__.py
của gói được cung cấp cho trình nhập
Khái niệm cơ bản về Python import
và sys.path
Theo tài liệu Python, đây là cách một câu lệnh import
tìm kiếm mô-đun hoặc gói chính xác để nhập
Khi một mô-đun có tên
import
7 được nhập, trước tiên, trình thông dịch sẽ tìm kiếm mô-đun tích hợp có tên đó. Nếu không tìm thấy, nó sẽ tìm kiếm một tệp có tênimport
8 trong danh sách các thư mục được cung cấp bởi biếnsys.path
.sys.path
được khởi tạo từ những vị trí này
- Thư mục chứa tập lệnh đầu vào [hoặc thư mục hiện tại khi không có tệp nào được chỉ định]
sys.path
1 [danh sách tên thư mục, có cùng cú pháp với biến hệ vỏ PATH]- Mặc định phụ thuộc vào cài đặt
Sau khi khởi tạo, các chương trình Python có thể sửa đổi
sys.path
. Thư mục chứa tập lệnh đang chạy được đặt ở đầu đường dẫn tìm kiếm, phía trước đường dẫn thư viện chuẩn. Điều này có nghĩa là các tập lệnh trong thư mục đó sẽ được tải thay vì các mô-đun cùng tên trong thư mục thư viện. Nguồn. Trăn 2 và 3
Về mặt kỹ thuật, tài liệu của Python không đầy đủ. Trình thông dịch sẽ không chỉ tìm một tệp [i. e. module] có tên là import
8, nó cũng sẽ tìm một thư mục [i. e. gói] có tên là import
7
Lưu ý rằng trình thông dịch Python trước tiên tìm kiếm thông qua danh sách các mô-đun tích hợp sẵn, các mô-đun được biên dịch trực tiếp vào trình thông dịch Python. Danh sách các mô-đun tích hợp này phụ thuộc vào cài đặt và có thể tìm thấy trong sys.path
5 [Python 2 và 3]. Một số mô-đun tích hợp sẵn thường được bao gồm là sys.path
6 [luôn được bao gồm], sys.path
7, sys.path
8 và sys.path
9, trong số những mô-đun khác
Không giống như các mô-đun tích hợp sẵn xuất hiện đầu tiên trong đường dẫn tìm kiếm, phần còn lại của các mô-đun trong thư viện chuẩn của Python [không tích hợp sẵn] xuất hiện sau thư mục của tập lệnh hiện tại. Điều này dẫn đến hành vi khó hiểu. có thể "thay thế" một số nhưng không phải tất cả các mô-đun trong thư viện chuẩn của Python. Ví dụ: trên máy tính của tôi [Windows 10, Python 3. 6], mô-đun sys.path
7 là mô-đun tích hợp sẵn, trong khi mô-đun sys.path
1 thì không. Do đó, sys.path
2 trong sys.path
3 sẽ nhập mô-đun sys.path
7 từ thư viện chuẩn, KHÔNG phải tệp sys.path
5 của riêng tôi trong cùng thư mục. Tuy nhiên, sys.path
6 trong sys.path
3 sẽ nhập tệp sys.path
8 của tôi, KHÔNG phải mô-đun sys.path
1 từ thư viện chuẩn
Ngoài ra, nhập Python phân biệt chữ hoa chữ thường. __init__.py
0 không giống như __init__.py
1
Hàm __init__.py
2 [Python 2 và 3] có thể được sử dụng để lấy danh sách tất cả các mô-đun có thể nhập từ một đường dẫn nhất định
nguồn
Thông tin thêm về sys.path
Để xem có gì trong sys.path
, hãy chạy phần sau trong trình thông dịch hoặc dưới dạng tập lệnh
Tài liệu của Python cho sys.path
mô tả nó là
Danh sách các chuỗi chỉ định đường dẫn tìm kiếm cho các mô-đun. Được khởi tạo từ biến môi trường
sys.path
1, cộng với mặc định phụ thuộc vào cài đặtNhư được khởi tạo khi khởi động chương trình, mục đầu tiên của danh sách này,
__init__.py
7, là thư mục chứa tập lệnh được sử dụng để gọi trình thông dịch Python. Nếu thư mục tập lệnh không có sẵn [e. g. nếu trình thông dịch được gọi một cách tương tác hoặc nếu tập lệnh được đọc từ đầu vào tiêu chuẩn], thì__init__.py
7 là chuỗi rỗng, hướng Python tìm kiếm các mô-đun trong thư mục hiện tại trước tiên. Lưu ý rằng thư mục tập lệnh được chèn trước các mục được chèn dosys.path
1Nguồn. Trăn 2 và 3
Tài liệu về giao diện dòng lệnh của Python thêm phần sau về việc chạy tập lệnh từ dòng lệnh. Cụ thể, khi chạy import
00
Trong phần này, chúng ta sẽ thử giải câu đố Nhập từ thư mục con trong Python bằng cách sử dụng ngôn ngữ máy tính. Mã được hiển thị dưới đây minh họa điểm này
GimmeDaRoot.py # A .py file in your root directory └─── FolderName/ # A folder in your root directory └─── Im_In_Subdirectory.py # A .py file in the subdirectory FolderName GimmeDaRoot.py # when working in this file import FolderName.Im_In_Subdirectory as importedpy
Dòng mã sau đây phác thảo các phương pháp khác nhau có thể được sử dụng để tìm giải pháp cho vấn đề Nhập từ thư mục con của Python
# Check out //docs.python.org/3/tutorial/modules.html#importing-from-a-package
Nhiều ví dụ đã giúp chúng tôi hiểu cách khắc phục lỗi Python Import From Subdirectory
Làm cách nào để bạn truy cập thư mục con trong Python?
Bài đăng này sẽ thảo luận về cách liệt kê tất cả các thư mục con trong một thư mục trong Python
- Sử dụng hệ điều hành. hàm listdir[]
- Sử dụng hệ điều hành. hàm scandir[]
- Sử dụng mô-đun pathlib. Bạn cũng có thể sử dụng mô-đun pathlib với Python 3. 4 để liệt kê tất cả các thư mục con trong một thư mục
- Sử dụng hệ điều hành. chức năng đi bộ []
- Sử dụng mô-đun toàn cầu
Python có thể tìm kiếm các thư mục con của tệp không?
sử dụng toàn cầu. glob[] để tìm kiếm các tệp cụ thể trong thư mục con trong Python. Gọi toàn cầu. glob[pathname, recursive=True] với tên đường dẫn là đường dẫn đến thư mục và đệ quy là True để cho phép tìm kiếm đệ quy thông qua các thư mục con hiện có
Làm cách nào để nhập một mô-đun từ thư mục gốc?
Để nhập mô-đun, thư mục chứa mô-đun đó phải có trên PYTHONPATH. Nó là một biến môi trường chứa danh sách các gói sẽ được Python tải. Danh sách các gói có trong PYTHONPATH cũng có trong sys. đường dẫn, vì vậy sẽ thêm đường dẫn thư mục mẹ vào sys. 16-Aug-2022
Làm cách nào để nhập mô-đun cục bộ bằng Python?
Cách nhập mô-đun cục bộ bằng Python
- Định nghĩa
- Thí dụ
- giải pháp đầu tiên. thêm root vào hệ thống. đường dẫn
- nhập khẩu tương đối
- giải pháp thứ 2. chạy như một mô-đun
- Chạy như một mô-đun trên Visual Code
- giải pháp thứ 3. sửa đổi PYTHONPATH
- Giải pháp thứ 4 [lỗi thời]. cài đặt ở chế độ có thể chỉnh sửa
Làm cách nào để đọc một thư mục trong một thư mục trong Python?
Cách tiếp cận
- Nhập mô-đun
- Thêm đường dẫn thư mục
- Thay đổi thư mục
- Lấy danh sách tệp từ một thư mục
- Lặp lại danh sách tệp và kiểm tra xem phần mở rộng của tệp có nằm trong. định dạng txt hay không
- Nếu tệp văn bản tồn tại, hãy đọc tệp bằng Xử lý tệp
Làm cách nào để liệt kê các tệp trong một thư mục và các thư mục con của nó?
Lệnh dir hiển thị danh sách các tệp và thư mục con trong một thư mục. Với tùy chọn /S, nó sẽ đệ quy các thư mục con và liệt kê cả nội dung của chúng. 30-Dec-2021
Làm cách nào để bạn đọc tất cả các tệp trong một thư mục và các thư mục con trong Python?
hệ điều hành. listdir['dir_path']. Trả về danh sách các tệp và thư mục có trong một đường dẫn thư mục đã chỉ định. hệ điều hành. đi bộ ['dir_path']. Đệ quy lấy danh sách tất cả các tệp trong thư mục và thư mục con. 19-Jan-2022
Làm cách nào để tìm nạp tất cả các tệp trong một thư mục bằng Python?
hệ điều hành. Phương thức listdir[] lấy danh sách tất cả các tệp và thư mục trong một thư mục được chỉ định. 15-Jul-2022
Làm cách nào để in danh sách thư mục con trong Python?
sử dụng hệ điều hành. listdir[] để liệt kê các thư mục con
- đường dẫn = '. ' Đường dẫn tệp ngay lập tức
- thư mục_contents = os. listdir[đường dẫn]
- in [thư mục_nội dung]
- cho mục trong thư mục_contents. Bộ lọc thư mục
- nếu hệ điều hành. đường dẫn. isdir[mục]
- in [mục]
Không thể nhập tệp từ thư mục Python khác?
Cách Pythonic nhất để nhập mô-đun từ thư mục khác là đặt một tệp trống có tên __init__. py vào thư mục đó và sử dụng đường dẫn tương đối với ký hiệu dấu chấm. Ví dụ: một mô-đun trong thư mục mẹ sẽ được nhập từ. mô-đun nhập khẩu