zipimport --- ایمپورت ماژولها از آرشیوهای Zip¶
کد منبع: Lib/zipimport.py
این ماژول امکان ایمپورت ماژولهای پایتون (*.py، *.pyc) و بستهها از بایگانیهای با قالب ZIP را اضافه میکند. معمولاً نیازی به استفاده صریح از ماژول zipimport نیست؛ این ماژول بهطور خودکار توسط سازوکار توکار import برای آیتمهای sys.path که مسیرهایی به بایگانیهای ZIP هستند، استفاده میشود.
معمولاً، sys.path فهرستی از نام پوشهها بهصورت رشتهها است. این ماژول همچنین اجازه میدهد یک آیتم از sys.path رشتهای باشد که نام یک بایگانی پرونده ZIP را مشخص میکند. بایگانی ZIP میتواند شامل ساختار زیرپوشه باشد تا از ایمپورت بستهها پشتیبانی کند، و میتوان مسیری را درون بایگانی مشخص کرد تا فقط از یک زیرپوشه ایمپورت انجام شود. برای مثال، مسیر example.zip/lib/ فقط از زیرپوشهی lib/ درون بایگانی ایمپورت میکند.
هر پروندهای ممکن است در بایگانی ZIP وجود داشته باشد، اما ایمپورتکنندهها فقط برای پروندههای .py و .pyc فراخوانی میشوند. ایمپورت ماژولهای پویا از ZIP (.pyd، .so) مجاز نیست. توجه داشته باشید که اگر یک بایگانی فقط شامل پروندههای .py باشد، پایتون تلاش نمیکند بایگانی را با افزودن پرونده .pyc متناظر تغییر دهد، به این معنا که اگر یک بایگانی ZIP شامل پروندههای .pyc نباشد، ایمپورت ممکن است نسبتاً کند باشد.
تغییر یافته در نسخهی 3.15: دروندادهای پروندهی فشردهی Zstandard (که با zstd فشرده شدهاند) پشتیبانی میشوند.
تغییر یافته در نسخهی 3.13: از ZIP64 پشتیبانی میشود
تغییر یافته در نسخهی 3.8: پیشتر، از آرشیوهای ZIP دارای کامنت آرشیو پشتیبانی نمیشد.
همچنین ببینید
- یادداشت کاربردی PKZIP
مستنداتی دربارهی قالب پرونده ZIP از فیل کاتز، خالق قالب و الگوریتمهای استفادهشده.
- PEP 273 - ایمپورت ماژولها از بایگانیهای Zip
نوشتهشده توسط James C. Ahlstrom، که پیادهسازیای نیز ارائه کرده است. پایتون 2.3 از مشخصات موجود در PEP 273 پیروی میکند، اما از پیادهسازی نوشتهشده توسط Just van Rossum استفاده میکند که از قلابهای ایمپورت (import hooks) توصیفشده در PEP 302 استفاده میکند.
importlib - پیادهسازی سازوکار ایمپورتبستهای که پروتکلهای مرتبط را برای پیادهسازی توسط همهی ایمپورتکنندهها فراهم میکند.
این ماژول یک استثنا تعریف میکند:
-
exception zipimport.ZipImportError¶
استثنایی که توسط اشیای zipimporter پرتاب میشود. این استثنا یک زیرکلاس از ImportError است، بنابراین میتوان آن را بهعنوان ImportError نیز گرفت.
اشیاء zipimporter¶
zipimporter کلاسی برای ایمپورت کردن پروندههای ZIP است.
-
class zipimport.zipimporter(archivepath)¶
یک نمونهی جدید از zipimporter ایجاد کنید. archivepath باید یک مسیر به یک پرونده ZIP، یا یک مسیر مشخص درون یک پرونده ZIP باشد. برای مثال، یک archivepath به شکل foo/bar.zip/lib ماژولها را در پوشهی lib درون پرونده ZIP foo/bar.zip جستجو میکند (به شرط آنکه وجود داشته باشد).
اگر archivepath به یک آرشیو ZIP معتبر اشاره نکند، ZipImportError پرتاب میشود.
تغییر یافته در نسخهی 3.12: متدهای find_loader() و find_module() که در 3.10 منسوخ شده بودند، اکنون حذف شدهاند. بهجای آنها از find_spec() استفاده کنید.
-
create_module(spec)¶
پیادهسازی importlib.abc.Loader.create_module() که None را برمیگرداند تا بهصراحت معناهای پیشفرض را درخواست کند.
اضافه شده در نسخهی 3.10.
-
exec_module(module)¶
پیادهسازی importlib.abc.Loader.exec_module().
اضافه شده در نسخهی 3.10.
-
find_spec(fullname, target=None)¶
پیادهسازیای از importlib.abc.PathEntryFinder.find_spec().
اضافه شده در نسخهی 3.10.
-
get_code(fullname)¶
شیء کد را برای ماژول مشخصشده برمیگرداند. اگر ماژول نتواند ایمپورت شود، ZipImportError را پرتاب میکند.
-
get_data(pathname)¶
دادهی مرتبط با pathname را برمیگرداند. اگر پرونده یافت نشد، OSError را پرتاب میکند.
تغییر یافته در نسخهی 3.3: IOError پیشتر پرتاب میشد، اکنون نام مستعاری از OSError است.
-
get_filename(fullname)¶
مقداری را که اگر ماژول مشخصشده وارد میشد __file__ روی آن تنظیم میشد، برمیگرداند. اگر ماژول پیدا نشود، ZipImportError را بالا میآورد.
-
get_source(fullname)¶
کد منبع ماژول مشخصشده را برمیگرداند. اگر ماژول یافت نشد، ZipImportError را پرتاب میکند و اگر بایگانی حاوی ماژول باشد اما کد منبعی برای آن نداشته باشد، None را برمیگرداند.
-
is_package(fullname)¶
اگر ماژول مشخصشده با fullname یک بسته باشد، True را برمیگرداند. اگر ماژول یافت نشد، ZipImportError را پرتاب میکند.
-
invalidate_caches()¶
نهانگاه داخلی اطلاعات مربوط به پروندههای یافتشده در بایگانی ZIP را پاک میکند.
اضافه شده در نسخهی 3.10.
-
archive¶
نام پرونده ZIP مرتبط با ایمپورتکننده، بدون زیرمسیر احتمالی.
-
prefix¶
زیرمسیر درون پرونده ZIP که ماژولها در آن جستجو میشوند. این مقدار برای اشیاء zipimporter که به ریشهی پرونده ZIP اشاره میکنند، رشتهی خالی است.
ویژگیهای archive و prefix، هنگامی که با یک اسلش ترکیب شوند، برابر با آرگومان اصلی archivepath دادهشده به سازندهی zipimporter هستند.
مثالها¶
در اینجا مثالی آمده است که یک ماژول را از یک بایگانی ZIP ایمپورت میکند - توجه داشته باشید که ماژول zipimport بهصراحت استفاده نمیشود.
$ unzip -l example_archive.zip
Archive: example_archive.zip
Length Date Time Name
-------- ---- ---- ----
8467 01-01-00 12:30 example.py
-------- -------
8467 1 file
>>> import sys
>>> # Add the archive to the front of the module search path
>>> sys.path.insert(0, 'example_archive.zip')
>>> import example
>>> example.__file__
'example_archive.zip/example.py'
©
حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است.
مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند.
برای اطلاعات بیشتر به
تاریخچه و مجوز مراجعه کنید.
بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است.
لطفاً کمک مالی کنید.
آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC).
آیا
اشکالی یافتید؟
ساخته شده با
Sphinx 9.1.0.