zipimport
— Importera moduler från zip-arkiv¶
Källkod: Lib/zipimport.py
Denna modul ger möjlighet att importera Python-moduler (*.py
, *.pyc
) och paket från ZIP-formatarkiv. Det är vanligtvis inte nödvändigt att använda zipimport
-modulen explicit; den används automatiskt av den inbyggda import
-mekanismen för sys.path
-objekt som är sökvägar till ZIP-arkiv.
Vanligtvis är sys.path
en lista med katalognamn i form av strängar. Den här modulen tillåter också att ett objekt i sys.path
är en sträng som namnger ett ZIP-filarkiv. ZIP-arkivet kan innehålla en underkatalogstruktur för att stödja paketimport, och en sökväg i arkivet kan anges för att endast importera från en underkatalog. Till exempel skulle sökvägen example.zip/lib/
endast importera från underkatalogen lib/
i arkivet.
Alla filer kan finnas i ZIP-arkivet, men importörer anropas endast för .py
- och .pyc
-filer. ZIP-import av dynamiska moduler (.pyd
, .so
) är inte tillåten. Observera att om ett arkiv endast innehåller .py
-filer kommer Python inte att försöka modifiera arkivet genom att lägga till motsvarande .pyc
-fil, vilket innebär att om ett ZIP-arkiv inte innehåller .pyc
-filer kan importen gå ganska långsamt.
Ändrad i version 3.13: ZIP64 stöds
Ändrad i version 3.8: Tidigare stöddes inte ZIP-arkiv med en arkivkommentar.
Se även
- PKZIP Application Note
Dokumentation om ZIP-filformatet av Phil Katz, skaparen av formatet och algoritmerna som används.
- PEP 273 - Importera moduler från zip-arkiv
Skriven av James C. Ahlstrom, som också tillhandahöll en implementation. Python 2.3 följer specifikationen i PEP 273, men använder en implementation skriven av Just van Rossum som använder importkrokarna som beskrivs i PEP 302.
importlib
- Implementeringen av importmaskinerietPaket med de relevanta protokoll som alla importörer ska genomföra.
Denna modul definierar ett undantag:
- exception zipimport.ZipImportError¶
Undantag som orsakas av zipimporter-objekt. Det är en underklass till
ImportError
, så det kan också fångas somImportError
.
zipimporter objekt¶
zipimporter
är en klass för import av ZIP-filer.
- class zipimport.zipimporter(archivepath)¶
Skapa en ny zipimporter-instans. archivepath måste vara en sökväg till en ZIP-fil eller till en specifik sökväg inom en ZIP-fil. Till exempel kommer en archivepath på
foo/bar.zip/lib
att leta efter moduler i katalogenlib
i ZIP-filenfoo/bar.zip
(förutsatt att den finns).ZipImportError
uppstår om archivepath inte pekar på ett giltigt ZIP-arkiv.Ändrad i version 3.12: Metoderna
find_loader()
ochfind_module()
, föråldrade i 3.10, är nu borttagna. Användfind_spec()
istället.- create_module(spec)¶
Implementering av
importlib.abc.Loader.create_module()
som returnerarNone
för att uttryckligen begära standardsemantik.Tillagd i version 3.10.
- exec_module(module)¶
Implementering av
importlib.abc.Loader.exec_module()
.Tillagd i version 3.10.
- find_spec(fullname, target=None)¶
En implementation av
importlib.abc.PathEntryFinder.find_spec()
.Tillagd i version 3.10.
- get_code(fullname)¶
Returnerar kodobjektet för den angivna modulen. Utlöser
ZipImportError
om modulen inte kunde importeras.
- get_data(pathname)¶
Returnerar data som är associerade med pathname. Utlös
OSError
om filen inte hittades.
- get_filename(fullname)¶
Returnerar värdet
__file__
skulle sättas till om den angivna modulen importerades. UtlöserZipImportError
om modulen inte kunde importeras.Tillagd i version 3.1.
- get_source(fullname)¶
Returnerar källkoden för den angivna modulen. Utlös
ZipImportError
om modulen inte kunde hittas, returneraNone
om arkivet innehåller modulen, men inte har någon källkod för den.
- is_package(fullname)¶
Returnerar
True
om modulen som anges av fullname är ett paket. UtlöserZipImportError
om modulen inte kunde hittas.
- load_module(fullname)¶
Laddar den modul som anges av fullname. fullname måste vara det fullständigt kvalificerade (prickade) modulnamnet. Returnerar den importerade modulen vid framgång, ger upphov till
ZipImportError
vid misslyckande.Deprecated since version 3.10, will be removed in version 3.15: Använd
exec_module()
istället.
- invalidate_caches()¶
Rensa den interna cacheminnet för information om filer som finns i ZIP-arkivet.
Tillagd i version 3.10.
- archive¶
Filnamnet på importörens tillhörande ZIP-fil, utan eventuell underväg.
- prefix¶
Den underväg i ZIP-filen där moduler söks. Detta är den tomma strängen för zipimporter-objekt som pekar på roten till ZIP-filen.
Attributen
archive
ochprefix
, när de kombineras med ett snedstreck, motsvarar det ursprungliga argumentet archivepath som ges till konstruktörenzipimporter
.
Exempel¶
Här är ett exempel på import av en modul från ett ZIP-arkiv - notera att modulen zipimport
inte används explicit.
$ unzip -l example.zip
Archive: example.zip
Length Date Time Name
-------- ---- ---- ----
8467 11-26-02 22:30 jwzthreading.py
-------- -------
8467 1 file
$ ./python
Python 2.3 (#1, Aug 1 2003, 19:54:32)
>>> import sys
>>> sys.path.insert(0, 'example.zip') # Add .zip file to front of path
>>> import jwzthreading
>>> jwzthreading.__file__
'example.zip/jwzthreading.py'