Size: 1737
Comment:
|
Size: 1745
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]] |
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.