Differences between revisions 1 and 2
Revision 1 as of 2004-12-16 09:44:48
Size: 1118
Editor: www
Comment:
Revision 2 as of 2004-12-16 09:50:06
Size: 1494
Editor: www
Comment:
Deletions are marked like this. Additions are marked like this.
Line 40: Line 40:
Sourcecode [http://starship.python.net/crew/theller/memimporter-0.0.1.zip memimporter-0.0.1.zip]

Installer for Python 2.3 [http://starship.python.net/crew/theller/memimporter-0.0.1-win32-py2.3.zip memimporter-0.0.1-win32-py2.3.zip]

Installer for Python 2.4 [http://starship.python.net/crew/theller/memimporter-0.0.1-win32-py2.4.zip memimporter-0.0.1-win32-py2.4.zip]

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 [http://www.joachim-bauch.de/tutorials/load_dll_memory.html 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.

Download

Sourcecode [http://starship.python.net/crew/theller/memimporter-0.0.1.zip memimporter-0.0.1.zip]

Installer for Python 2.3 [http://starship.python.net/crew/theller/memimporter-0.0.1-win32-py2.3.zip memimporter-0.0.1-win32-py2.3.zip]

Installer for Python 2.4 [http://starship.python.net/crew/theller/memimporter-0.0.1-win32-py2.4.zip memimporter-0.0.1-win32-py2.4.zip]

Hacks/ZipExtImporter (last edited 2015-03-30 19:50:22 by JimmyRetzlaff)