Differences between revisions 7 and 9 (spanning 2 versions)
Revision 7 as of 2005-01-04 20:50:59
Size: 1705
Editor: www
Comment:
Revision 9 as of 2008-07-08 11:27:43
Size: 1745
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 12: Line 12:
Bauch's [http://www.joachim-bauch.de/tutorials/load_dll_memory.html MemoryModule] library. This library emulates the win32 api Bauch's [[http://www.joachim-bauch.de/tutorials/load_dll_memory.html|MemoryModule]] library. This library emulates the win32 api
Line 42: Line 42:
Sourcecode [http://starship.python.net/crew/theller/memimporter-0.0.1.zip memimporter-0.0.1.zip] Sourcecode [[http://starship.python.net/crew/theller/memimporter-0.0.1.zip|memimporter-0.0.1.zip]]
Line 44: Line 44:
Installer for Python 2.3 [http://starship.python.net/crew/theller/memimporter-0.0.1.win32-py2.3.exe memimporter-0.0.1-win32.py2.3.exe] Installer for Python 2.3 [[http://starship.python.net/crew/theller/memimporter-0.0.1.win32-py2.3.exe|memimporter-0.0.1-win32.py2.3.exe]]
Line 46: Line 46:
Installer for Python 2.4 [http://starship.python.net/crew/theller/memimporter-0.0.1.win32-py2.4.exe memimporter-0.0.1-win32.py2.4.exe] Installer for Python 2.4 [[http://starship.python.net/crew/theller/memimporter-0.0.1.win32-py2.4.exe|memimporter-0.0.1-win32.py2.4.exe]]
Line 51: Line 51:
Feedback appreciated. Log in to this wiki, and enter your comments here. Feedback appreciated. Log in to this wiki (click to UserPreferences link), and enter your comments here.

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.

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