zipimport --- Nhập mô-đun từ kho lưu trữ Zip¶
Source code: Lib/zipimport.py
Mô-đun này bổ sung khả năng nhập các mô-đun Python (*.py, *.pyc) và các gói từ kho lưu trữ có định dạng ZIP. Thông thường không cần thiết phải sử dụng mô-đun zipimport một cách rõ ràng; nó được cơ chế import tích hợp tự động sử dụng cho các mục sys.path là đường dẫn đến kho lưu trữ ZIP.
Thông thường, sys.path là danh sách tên thư mục dưới dạng chuỗi. Mô-đun này cũng cho phép một mục của sys.path trở thành một chuỗi đặt tên cho kho lưu trữ tệp ZIP. Kho lưu trữ ZIP có thể chứa cấu trúc thư mục con để hỗ trợ nhập gói và có thể chỉ định đường dẫn trong kho lưu trữ để chỉ nhập từ thư mục con. Ví dụ: đường dẫn example.zip/lib/ sẽ chỉ nhập từ thư mục con lib/ trong kho lưu trữ.
Bất kỳ tệp nào cũng có thể có trong kho lưu trữ ZIP, nhưng trình nhập chỉ được gọi đối với các tệp .py và .pyc. ZIP nhập mô-đun động (.pyd, .so) không được phép. Lưu ý rằng nếu kho lưu trữ chỉ chứa các tệp .py, Python sẽ không cố gắng sửa đổi kho lưu trữ bằng cách thêm tệp .pyc tương ứng, nghĩa là nếu kho lưu trữ ZIP không chứa các tệp .pyc thì quá trình nhập có thể khá chậm.
Thay đổi trong phiên bản 3.13: ZIP64 được hỗ trợ
Thay đổi trong phiên bản 3.8: Trước đây, kho lưu trữ ZIP có nhận xét lưu trữ không được hỗ trợ.
Xem thêm
- PKZIP Application Note
Tài liệu về định dạng tệp ZIP của Phil Katz, người tạo ra định dạng và thuật toán được sử dụng.
- PEP 273 - Nhập mô-đun từ kho lưu trữ Zip
Được viết bởi James C. Ahlstrom, người cũng cung cấp cách triển khai. Python 2.3 tuân theo đặc tả trong PEP 273, nhưng sử dụng cách triển khai được viết bởi Just van Rossum và sử dụng các móc nhập được mô tả trong PEP 302.
importlib- Thi công nhập khẩu máy mócGói cung cấp các giao thức liên quan để tất cả các nhà nhập khẩu thực hiện.
Mô-đun này xác định một ngoại lệ:
- exception zipimport.ZipImportError¶
Ngoại lệ được đưa ra bởi các đối tượng zipimporter. Nó là một lớp con của
ImportError, vì vậy nó cũng có thể được gọi làImportError.
Đối tượng zipimporter¶
zipimporter là lớp để nhập tệp ZIP.
- class zipimport.zipimporter(archivepath)¶
Tạo một phiên bản zipimporter mới. archivepath phải là đường dẫn đến tệp ZIP hoặc đến một đường dẫn cụ thể trong tệp ZIP. Ví dụ: một archivepath của
foo/bar.zip/libsẽ tìm kiếm các mô-đun trong thư mụclibbên trong tệp ZIPfoo/bar.zip(với điều kiện là nó tồn tại).ZipImportErrorđược nâng lên nếu archivepath không trỏ đến kho lưu trữ ZIP hợp lệ.Thay đổi trong phiên bản 3.12: Các phương thức
find_loader()vàfind_module(), không được dùng nữa trong 3.10 hiện đã bị xóa. Thay vào đó hãy sử dụngfind_spec().- create_module(spec)¶
Triển khai
importlib.abc.Loader.create_module()trả vềNoneđể yêu cầu rõ ràng ngữ nghĩa mặc định.Added in version 3.10.
- exec_module(module)¶
Triển khai
importlib.abc.Loader.exec_module().Added in version 3.10.
- find_spec(fullname, target=None)¶
Triển khai
importlib.abc.PathEntryFinder.find_spec().Added in version 3.10.
- get_code(fullname)¶
Trả về đối tượng mã cho mô-đun đã chỉ định. Tăng
ZipImportErrornếu không thể nhập mô-đun.
- get_filename(fullname)¶
Trả về giá trị
__file__sẽ được đặt thành nếu mô-đun chỉ định đã được nhập. TăngZipImportErrornếu không thể nhập mô-đun.Added in version 3.1.
- get_source(fullname)¶
Trả về mã nguồn cho mô-đun được chỉ định. Tăng
ZipImportErrornếu không tìm thấy mô-đun, trả vềNonenếu kho lưu trữ có chứa mô-đun nhưng không có nguồn cho mô-đun đó.
- is_package(fullname)¶
Trả về
Truenếu mô-đun được chỉ định bởi fullname là một gói. TăngZipImportErrornếu không tìm thấy mô-đun.
- load_module(fullname)¶
Tải mô-đun được chỉ định bởi fullname. fullname phải là tên mô-đun đủ điều kiện (có dấu chấm). Trả về mô-đun đã nhập nếu thành công, tăng
ZipImportErrornếu thất bại.Không được dùng nữa kể từ phiên bản 3.10, sẽ bị xóa trong phiên bản 3.15: Thay vào đó hãy sử dụng
exec_module().
- invalidate_caches()¶
Xóa bộ nhớ đệm nội bộ chứa thông tin về các tệp được tìm thấy trong kho lưu trữ ZIP.
Added in version 3.10.
- archive¶
Tên tệp của tệp ZIP được liên kết của nhà nhập khẩu, không có đường dẫn phụ.
- prefix¶
Đường dẫn phụ trong tệp ZIP nơi các mô-đun được tìm kiếm. Đây là chuỗi trống cho các đối tượng zipimporter trỏ đến thư mục gốc của tệp ZIP.
Các thuộc tính
archivevàprefix, khi được kết hợp với dấu gạch chéo, sẽ bằng đối số archivepath ban đầu được cấp cho hàm tạozipimporter.
Ví dụ¶
Dưới đây là ví dụ nhập mô-đun từ kho lưu trữ ZIP - lưu ý rằng mô-đun zipimport không được sử dụng rõ ràng.
$ giải nén -l example_archive.zip
Lưu trữ: example_archive.zip
Độ dài Ngày Giờ Tên
-------- ---- ---- ----
8467 01-01-00 12:30 example.py
-------- -------
8467 1 tập tin
>>> nhập hệ thống
>>> # Add kho lưu trữ ở phía trước đường dẫn tìm kiếm mô-đun
>>> sys.path.insert(0, 'example_archive.zip')
>>> ví dụ nhập khẩu
>>> ví dụ.__file__
'example_archive.zip/example.py'