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.