Differences between revisions 1 and 8 (spanning 7 versions)
Revision 1 as of 2004-12-16 09:44:48
Size: 1118
Editor: www
Comment:
Revision 8 as of 2005-01-04 20:53:07
Size: 1737
Editor: www
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 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 [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.

zipextimporter doesn't yet work for extensions in packages, but I have a fix for that.

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.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.

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