Overview

zipextimporter.py contains the ZipExtImporter class which allows to load Python binary extension modules contained in a zip.archive, without unpacking them to the file system.

Call the zipextimporter.install() function to install the import hook, add a zip-file containing .pyd or .dll extension modules to sys.path, and import them.

It contains a _memimporter.pyd extension which uses code from Joachim Bauch's MemoryModule library. This library emulates the win32 api function LoadLibrary.

License

LGPL (because that's what MemoryModule uses).

Sample usage

>>> import zipextimporter
>>> zipextimporter.install()
>>> import sys
>>> sys.path.append("lib.zip")
>>> import _socket
>>> _socket.__file__
'c:\\sf\\py2exe\\hacks\\memimp\\lib.zip\\_socket.pyd'
>>> _socket.__loader__
<ZipExtensionImporter at a74480>
>>>

Bugs

reload() on already imported extension modules does not work correctly: It happily loads the extension a second time.

zipextimporter doesn't yet work for extensions in packages, but I have a fix for that.

Download

Sourcecode memimporter-0.0.1.zip

Installer for Python 2.3 memimporter-0.0.1-win32.py2.3.exe

Installer for Python 2.4 memimporter-0.0.1-win32.py2.4.exe

Comments, Feedback

Feedback appreciated. Log in to this wiki (click to UserPreferences link), and enter your comments here.