Differences between revisions 1 and 11 (spanning 10 versions)
Revision 1 as of 2004-12-16 09:44:48
Size: 1118
Editor: www
Comment:
Revision 11 as of 2015-03-30 19:50:22
Size: 1745
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
add a zip-file containing .pyd or .dll extension modules to sys.path, add a zip-file containing '''.pyd''' or '''.dll''' extension modules to '''sys.path''',
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 38: Line 38:
zipextimporter doesn't yet work for extensions in packages, but I have a fix for that.
Line 40: Line 42:
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.exe|memimporter-0.0.1-win32.py2.3.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]]


= Comments, Feedback =

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)